我有一个运行在IP1主机上的bash脚本。该脚本对具有IP2的远程主机执行ssh
ssh ubuntu@IP2 "ls -l ~"
The ssh replies with a
The authenticity of host 'IP2 (IP2)' can't be established.
ECDSA key fingerprint is SHA256:S9ESYzoNs9dv/i/6T0aqXQoSXHM.
Are you sure you want to continue connecting (yes/no)?
我想自动执行对以上ssh命令的响应“是”。我如何从bash脚本中做到这一点? IP2是随机IP,因此我无法将其添加到主机IP1上的已知主机列表中。
答案 0 :(得分:3)
如果您不想验证/检查指纹,则可以使用以下类似方法:
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ubuntu@IP2 "ls -l ~"
它是这样工作的:
-o UserKnownHostsFile=/dev/null
UserKnownHostsFile
参数指定用于存储用户主机密钥的数据库文件(默认为~/.ssh/known_hosts
)。
通过将空设备文件配置为主机密钥数据库,SSH被欺骗以为SSH客户端以前从未连接过任何SSH服务器,因此也永远不会遇到不匹配的主机密钥。
-o StrictHostKeyChecking=no
参数StrictHostKeyChecking
指定SSH是否将自动将新的主机密钥添加到主机密钥数据库文件中。通过将其设置为no
,将为所有首次连接自动添加主机密钥,而无需用户确认。
有关更多详细信息:How to disable SSH host key checking
答案 1 :(得分:1)
您是否已测试过“ StrictHostKeyChecking”选项:
ssh -o "StrictHostKeyChecking no" root@10.x.x.x