我对如何为多台机器设置无密码登录有点困惑,但我想我可以从头开始。问题是我已经为一台机器设置了它,我不想在尝试为另一台机器设置时把它弄乱。让我们澄清一下:
- 机器A:我正在连接的机器从
- 机器乙:我正在连接的机器到。 要求输入密码
- 机器C:我正在连接的机器到. 无密码 ssh
我读过一些关于设置无密码 ssh 到某个网站的教程,但它们通常以“移开id_rsa
以免被吹走”开始,但在教程结束时它并没有移回原位。如果我完全没有帮助,我会这样做:
- 登录到乙
ssh-keygen -t rsa -f ~/id_rsa.other
scp id_rsa.other.pub A:~/.ssh
echo "Host A \n Identity File ~/.ssh/id_rsa.other" > ~/.ssh/config
(请注意,我意识到这些命令可能不完全正确,但这只是想法)。
我不太清楚的是,我是否需要更新配置A,乙或两者兼而有之。我相当确定可以从A到乙, 这是A这需要公钥..但我想我也需要乙使用id_rsa
该公钥的正确文件。最后,我不希望C完全受到影响。它正在使用id_rsa
。我哪里做错了吗?
答案1
听起来你正在连接A到乙或者A到C,对吧?(不是A到乙进而乙到C)
如果是这样,那么你需要将你的 id_rsa.pub 复制到乙以及C。
~/.ssh/config
如果您不使用标准文件,则需要修改序列中步骤 4 中的文件~/.ssh/authorized_keys
。
以下是我要做的事情(生成 id_rsa 和 id_rsa.pub 之后)...
- 将 id_rsa.pub(使用 scp,使用密码提示)复制到 B 和 C
- 登录 B -
mv id_rsa.pub ~/.ssh/authorized_keys
- 登录 C -
mv id_rsa.pub ~/.ssh/authorized_keys
私钥保存在A. 您可以使用相同的私钥/公钥组合连接多台机器。
如果由于某种原因,你拥有用户的多个公钥乙或者C,您可以将它们附加到文件末尾authorized_keys
。
答案2
我终于设计出了一种方便的方法来设置多个节点的无密码 ssh。使用这些脚本已经有一段时间了,到目前为止对我来说一直很完美。希望它能帮助人们节省时间。我相信这种机制可以在几分钟内同时运行几百个节点。它基于 expect 和 bash 脚本。看看它,让我知道你的反馈。脚本链接 -http://adhocshare.tk/linux/setting-password-less-ssh-across-nodes-cluster/
如果您以前使用过 ssh-keygen 和 ssh-copy-id,那么脚本中的整体思路是使用 pdsh 和包含主机名的文件在所有节点上同时自动执行该任务。几乎所有操作都是自动化的,将为您节省大量时间。让我知道这对您有何帮助。我非常乐意为您提供帮助。