自动化ssh响应

时间:2018-07-28 05:59:16

标签: bash ssh

我有一个运行在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上的已知主机列表中。

2 个答案:

答案 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