这是我的情况:我正在设置一个测试工具,它将从中央客户端启动多个虚拟机实例,然后通过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)?
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以绕过这个问题并使客户端机器已经知道新主机,也许是通过使用已经嵌入到虚拟机映像中的公钥?如果可以的话,我真的很想避免使用 Expect 或其他任何东西来回答交互式提示。
我有一个 Linux 服务器,每当我连接它时,它都会向我显示更改 SSH 主机密钥的消息:
$ ssh root@host1 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@ @警告:远程主机标识已更改!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@ 有人可能正在做一些令人讨厌的事情!现在有人可能正在窃听你(中间人攻击)!也有可能 RSA 主机密钥刚刚被更改。远程主机发送的 RSA 密钥的指纹为 93:a2:1b:1c:5f:3e:68:47:bf:79:56:52:f0:ec:03:6b。请联系您的系统管理员。在 /home/emerson/.ssh/known_hosts 中添加正确的主机密钥以消除此消息。/home/emerson/.ssh/known_hosts:377 中的违规密钥
host1 的 RSA 主机密钥已更改,您已请求严格检查。主机密钥验证失败。
它让我保持登录状态几秒钟,然后关闭连接。
host1:~/.ssh # 从远程主机 host1 读取:对等端的连接重置 与 host1 的连接关闭。
有谁知道发生了什么以及我可以做些什么来解决这个问题?
第一次ssh-copy-id会问
# ssh-copy-id -i .ssh/id_dsa.pub backup@example.com
The authenticity of host 'example.com (xxx.xxx.xxx.xxx)' can't be established.
RSA key fingerprint is 39:fb:5e:70:30:33:2b:18:17:e9:4f:2f:91:b5:d2:21.
Are you sure you want to continue connecting (yes/no)?
Run Code Online (Sandbox Code Playgroud)
是否可以编写此脚本,因此脚本只会回答是?