我可以自动将新主机添加到known_hosts吗?

我可以自动将新主机添加到known_hosts吗?

我的情况如下:我正在设置一个测试工具,它将从中央客户端启动多个虚拟机实例,然后通过 对其执行命令ssh。虚拟机将具有以前未使用的主机名和 IP 地址,因此它们不会出现在~/.ssh/known_hosts中央客户端的文件中。

我遇到的问题是ssh针对新虚拟实例运行的第一个命令总是会出现交互式提示:

The authenticity of host '[hostname] ([IP address])' can't be established.
RSA key fingerprint is [key fingerprint].
Are you sure you want to continue connecting (yes/no)?

有没有办法可以绕过这个问题,让新主机已经被客户端计算机所知,也许是通过使用已经嵌入到虚拟机映像中的公钥?如果可以的话,我真的很想避免使用 Expect 或其他任何东西来回答交互式提示。

答案1

在配置文件中或通过以下方式将选项设置StrictHostKeyChecking为:no-o

ssh -o StrictHostKeyChecking=no [email protected]

答案2

我认为,实现此目的的最佳方法如下:

ssh-keygen -R [hostname]
ssh-keygen -R [ip_address]
ssh-keygen -R [hostname],[ip_address]
ssh-keyscan -H [hostname],[ip_address] >> ~/.ssh/known_hosts
ssh-keyscan -H [ip_address] >> ~/.ssh/known_hosts
ssh-keyscan -H [hostname] >> ~/.ssh/known_hosts

这将确保没有重复的条目,确保主机名和 IP 地址都得到覆盖,并且还将对输出进行散列,这是一种额外的安全措施。

答案3

对于懒人来说:

ssh-keyscan -H <host> >> ~/.ssh/known_hosts

-H 对主机名/IP 地址进行哈希处理

答案4

您可以使用ssh-keyscan命令获取公钥并将其附加到您的known_hosts文件中。

相关内容