我必须配置 hadoop 集群。为此,要求所有系统都应该能够以无密码模式相互连接。出于安全考虑,我只允许基于 key 的 ssh(无密码)。集群中有 5 个系统。我必须生成单个键值对。如何将所有其他系统配置为仅使用此 key 对,以便它们可以在无密码模式下相互 ssh。
最佳答案
我假设您指的是 Linux 机器。
每台机器上必须有一个 ~/.ssh 目录 chmod 700 在将发起或接收连接的帐户下。
(私)钥必须在没有密码的情况下生成。
不要忘记默认情况下最近 ssh 不接受弱(<2048 位) key 。
必须执行以下操作才能发起连接。
- 您的私钥必须适本地放在 ~/.ssh/id_rsa 或 ~/.ssh/id_dsa 中。您可以使用其他名称,但它必须包含在发出请求的机器上的 -i 选项中,以明确指示私钥。
- 您的私钥必须是 chmod 600。
现在允许机器接收一个请求:
- 您的公钥必须放在将接收连接的帐户下名为 ~/.ssh/authorized_keys 的文件中。您也可以在此处放置允许通过此帐户连接的其他 key 。如果您在 vi 中并将 key 从 PuTTY 的粘贴缓冲区粘贴到文件中,那么一件特别棘手的事情是 key 以“ssh-”开头。如果您不处于插入模式,第一个“s”将使 vi 进入插入模式,而键的其余部分看起来很好。但是您会在 key 的开头缺少一个“s”。我花了好几天才找到。
- 我喜欢 chmod 600 ~/.ssh/authorized_keys,但通常不需要。
- 现在,您必须将主机指纹添加到缓存中。转到机器 A,然后通过 ssh 连接到机器 B。第一次,您会收到类似“是否要添加...到主机 key 缓存?”的查询。这将非常有效地停止您的自动化过程。您有几个选择,具体取决于您的情况:从 5 台机器中的每台机器手动 ssh 20 次到另外 4 台机器并说"is"。 b.您可以获得名为“known_hosts”的文件(这就是 ssh 所说的“缓存”)并合并条目,以便可以将相同的 host_keys 复制到所有机器。 C。您可以将主机指纹放在/etc/ssh/ssh_known_hosts 中。 d.将指纹放入 DNS(参见 man ssh)。 e.只需在您的 ssh 配置中设置 StrictHostKeyChecking 将其关闭(不推荐)。
关于linux - 如何在集群中使用单键值对ssh,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46558248/