我遇到一个问题,如何实现服务器集群中任意两个节点之间的无密码登录。现在我有一个由 10 个节点组成的服务器集群,其 IP 地址如下:
192.168.0.1 # node1
192.168.0.2 # node2
...
192.168.0.10 # node10
我在这三个节点上的用户名都是xyz
,这些节点上的系统都是Ubuntu14.04
。
这似乎是一个规范的问题,应该在很多地方得到回答,但我使用谷歌的搜索只告诉我两个节点的解决方案。例如,将生成的公钥传递node1
到authorized_keys
文件中,以允许从其余节点node2, ..., node10
进行无密码登录。node1
但如何将此方法扩展到服务器集群中的任意两个节点呢?我们是否应该在每个节点中手动生成公钥并将每个节点的公钥复制到其余节点?有没有通用且方便的方法呢?
答案1
如果您有集群设置,则可能有共享文件系统。如果是这样,那么您只需将 SSH 密钥添加到服务器本身即可。如果它连接到另一台服务器,它将在授权密钥列表中找到自己的密钥。然后您可以从任何服务器连接到任何服务器。
如果它们有不同的文件系统,您需要手动执行此操作。您可以为该xyz
用户以及ssh-copy-id
其他每台服务器创建一个新的 SSH 密钥。这就像 N² 一样随着服务器数量的增加而扩展,这并不酷。
您可以生成一个 SSH 密钥并将其复制到所有计算机上/home/xyz/.ssh/id_rsa
和id_rsa.pub
。然后将这个密钥注册到所有机器上。现在您可以使用相同的 SSH 密钥从任何服务器登录到任何其他服务器。
为了部署它,我将编写一个快速脚本,该脚本使用scp
-loopfor
来迭代服务器。