通过脚本创建用户和 SSH 密钥

通过脚本创建用户和 SSH 密钥

我正在编写一个脚本,用于创建用户并为该用户添加密钥,以便他可以使用该密钥和他的用户名通过 SSH 进入我的虚拟机

例如,用户 = john

useradd -m john &&
cd ~/.ssh/ && 
rm -rf tmp_rsa* &&
ssh-keygen -t rsa -b 4096 -C "[email protected]" -N '' -f john_rsa &&
echo "#tmp_rsa" >> authorized_keys &&
cat john_rsa.pub >> authorized_keys &&
cat authorized_keys &&
service ssh restart &&
echo ">>> Done"

上述脚本是否正确,可以实现我的目标?

我尝试连接 UN:,john并且生成了密钥john_rsa

我有

在此处输入图片描述


谢谢@marosg@Takkat

这是我更新的脚本

adduser -m john &&
cd ~/.ssh/ && 
rm -rf tmp_rsa* &&
ssh-keygen -t rsa -b 4096 -C "[email protected]" -N '' -f john_rsa &&
echo "#tmp_rsa" >> ~john/.ssh/authorized_keys &&
cat john_rsa.pub >> ~john/.ssh/authorized_keys &&
cat authorized_keys &&
echo ">>> Done"

答案1

这里有几个错误:

  • 你创建了用户 john,然后你不再对该用户执行任何操作

  • 您正在向您的用户添加密钥

  • 需要在此处登录的远程用户需要他所连接的计算机上的 ssh 密钥对中的私钥

  • 添加密钥后无需重启 ssh 服务

客户端需要什么

  • 用户生成 ssh 密钥对并向您提供该密钥对的公钥(ssh-keygen ...; cat id_rsa.pub

你在服务器端需要的是

  • 添加用户 john

  • 将用户提供的公钥添加到~john/.ssh/authorized_keys( echo id_rsa.pub_provided_by_remote_user >> ~john/.ssh/authorized_keys)

答案2

尝试这个


set -euo pipefail

DEV_GROUP="somegroup"
sudo groupadd --force "${DEV_GROUP}"

function adduser() {
    local var_user="$1"
    shift 
    local var_ssh_pub_key="$*"
    id --user "${var_user}" &>/dev/null || sudo useradd --gid "${DEV_GROUP}" --groups wheel,docker "${var_user}"
    echo "${var_user} ALL=(ALL) NOPASSWD:ALL" | sudo tee "/etc/sudoers.d/${var_user}"
    sudo --user "${var_user}" mkdir -p "/home/${var_user}/.ssh"
    sudo --user "${var_user}" touch "/home/${var_user}/.ssh/authorized_keys"
    echo "${var_ssh_pub_key}" | sudo --user "${var_user}" tee "/home/${var_user}/.ssh/authorized_keys"
}

adduser someuser ssh-rsa AAAAB3NzaC1.... user@host

相关内容