如何为所有用户设置无密码 SSH

如何为所有用户设置无密码 SSH

我可以通过执行以下操作为单个用户设置无密码 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 目录都有正确的权限(在两台机器上)。

相关内容