我正在编写一个脚本,用于创建用户并为该用户添加密钥,以便他可以使用该密钥和他的用户名通过 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