网络上所有机器的无密码 ssh

网络上所有机器的无密码 ssh

我知道允许两个服务器之间基于密钥的身份验证的基本方法是使用以下三个步骤:

ssh-keygen
ssh-copy-id -i remote_host
ssh remote_host

使用这种方法,当我通过 ssh 进入远程主机时,我需要手动输入密码,然后执行相反的操作以允许 ssh 双向运行。

我遇到的问题是,我需要 Azure 中同一网络上的 100 台服务器能够在没有密码的情况下双向 ssh 连接,并且希望能够再次做到这一点。

有没有一种方法可以让我轻松地为同一网络上的所有机器执行此操作,而不必为每台机器进行设置?

答案1

要管理数百台服务器,您最好使用某种配置管理工具,例如 puppet 和 chef 或 ansible 等。

您仍然需要设置一次,但以后您可以做比 ssh 更多的事情,所以它可能是值得的,例如当您想要更新 ssh 密钥时,在 puppet master(或其他 CM 中的等效项)中进行一次更改就足够了。为了安全起见,建议您不时更改密钥。

答案2

你可以使用 Bash:

#!/bin/bash
for ip in `cat /root/serverips.txt`; do
    ssh-copy-id -i ~/.ssh/id_rsa.pub $ip
done

相关内容