如何让我的bash脚本为给定用户创建ssh密钥对

wljmcqd8  于 2022-10-23  发布在  Linux
关注(0)|答案(1)|浏览(142)

我对猛烈抨击脚本编程还是个新手。我编写了一个可以创建组和用户的脚本,运行良好,但我现在面临的挑战是如何让脚本为特定用户创建ssh密钥对。在我的脚本中,它在您切换到该用户后立即停止工作,并且不会继续创建ssh密钥对。
以下是我的剧本。

for group in admin support engineering
    do
            sudo groupadd $group
            sudo useradd -m -s /bin/bash achebeh_${group}
    done
    sudo passwd achebeh_admin
    sudo su achebeh_admin
    ssh-keygen -t rsa

那么,请告诉我如何使用此脚本为achebeh_admin用户创建ssh对。我乐于学习。这是我在参加完一门辅导课后的第一份剧本。

v6ylcynt

v6ylcynt1#

@Achebe-Peter如果我从你的简短描述中正确地理解了你的要求,这将为你做这项工作。

  • 注:*
    *在测试环境中尝试此脚本,风险自负!
    *假设您没有配置用户和相关文件,此脚本执行得最好

# !/bin/bash

### Configuration Parameters Start ###

## The username that doesn't exist and you want to create.

user_name_prefix='testuser'

## The groups array that doesn't exist and you want to create and assign them to your user.

groups=(testadmin testsupport testengineering)

## SSH-key lenght

ssh_key_lenght='2048'

### Configuration Parameters End ###

for group in ${groups[@]} ;do
  # Set username containing the prefix and group name
  user="${user_name_prefix}_${group}"

  # create such user if not exist
  getent passwd ${user} &>/dev/null
  if [ "$?" -ne 0 ] ;then
    sudo useradd -m -s /bin/bash "${user}"

    echo -e "\nType password for: ${user}"
    sudo passwd ${user}
  fi

  # Create '.ssh' directory in user's home directory
  if ! [ -d /home/${user}/.ssh ] ;then
    sudo mkdir /home/${user}/.ssh
  fi

  # Generate ssh-key pair and move them to correspondig user's '.ssh/' dir.
  ssh_file_name="./${user}_ssh"
  (
  echo "${ssh_file_name}"
  echo ""
  echo "" 
  ) | ssh-keygen -t rsa -b ${ssh_key_lenght}

  sudo mv -i "${ssh_file_name}" "${ssh_file_name}.pub" /home/${user}/.ssh/
  sudo chown ${user}:${user} /home/${user}

  # Create the groups (if does not exist)
  getent group ${group} &>/dev/null
  if [ "$?" -ne 0 ] ;then
    sudo groupadd ${group}
  fi

  # Assign relevant group to the new user
  sudo usermod -aG ${group} ${user}
done

exit 0

测试中

GNU bash, version 5.0.17(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

PS.如果我的答案符合你的要求,请投赞成票,并将其标记为正确答案。

相关问题