我可以通过执行以下操作为单个用户设置无密码 SSH:
1)在~/.ssh 中为本地机器生成 RSA 密钥对
2)将本地机器的公钥复制到远程机器的~/.ssh/authorized_keys
但有没有办法做这个动作全部用户?也许在 /root/.ssh 中执行与上述相同的步骤?或者是否有一个好方法让 root 用户在每个用户的 ~/.ssh 目录中部署密钥并修改 authorized_key 列表?
谢谢。
答案1
如果您想为所有用户提供对单个远程主机的无密码访问,那么 OpenSSH 支持基于主机的公钥身份验证,即用户使用客户端的主机密钥向服务器进行身份验证,并使用 /etc/ssh/shosts.equiv 授权用户。
这里有一个关于如何配置它的很好的指南:http://en.wikibooks.org/wiki/OpenSSH/Cookbook/Host-based_Authentication
答案2
这样的事情怎么样?
for u in $USERLIST; do
su $u
ssh-keygen [options] -f /home/$u/.ssh/id_rsa
scp /home/$u/.ssh/id_rsa.pub $REMOTEHOST:/home/$u/.ssh/authorized_keys
exit
done
当然,这需要为 scp 输入大量密码。您可以以 root 身份执行所有操作以避免输入密码(假设您已设置 root 无密码 ssh),但随后您必须执行chown
所有操作:
for u in $USERLIST; do
ssh-keygen [options] -f /home/$u/.ssh/id_rsa
# assuming "users" is the common group on the system
chown $u:users /home/$u/.ssh/id_rsa
# use -a to preserve ownership
rsync -av /home/$u/.ssh/id_rsa.pub $REMOTEHOST:/home/$u/.ssh/authorized_keys
done
当然,完成后您需要确保每个用户的主目录和.ssh 目录都有正确的权限(在两台机器上)。