You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过SSH自动完成未知服务器的首次连接验证(免手动确认并写入known_hosts)

如何通过SSH自动完成未知服务器的首次连接验证(免手动确认并写入known_hosts)

我太懂这种在自动化脚本里被SSH首次连接确认打断的痛苦了!特别是云基础设施创建这类完全自动化的场景,突然冒出来个手动确认提示,直接就把整个流程卡断了。别担心,有几个靠谱的方法能解决这个问题:

方法一:直接通过SSH参数跳过验证并自动写入密钥

这是最直接的方式,给ssh命令加上StrictHostKeyChecking=no参数,就能自动接受新服务器的密钥并写入known_hosts文件,全程不会弹出确认提示:

ssh -o StrictHostKeyChecking=no root@<IP>

如果只是临时连接,不想把这个服务器的密钥留在known_hosts里(避免后续干扰),可以再加一个参数把主机密钥文件指向空设备:

ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@<IP>

方法二:提前用ssh-keyscan写入主机密钥

如果你的脚本允许提前准备,可以先用ssh-keyscan获取目标服务器的密钥,提前写入known_hosts,这样后续SSH连接就不会有任何提示了:

ssh-keyscan <IP> >> ~/.ssh/known_hosts

这个方法相对更可控,适合你这种完全可控的环境——主动获取密钥并确认写入,比自动接受更稳妥。

另外提一句,你之前试的echo yes | ssh -q root@<IP>之所以没用,是因为SSH的确认提示是输出到标准错误(stderr)的,而管道只传递标准输入(stdin),所以这个方式没法把"yes"传给确认提示,自然就无效啦。

备注:内容来源于stack exchange,提问作者mszmurlo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 12:05:26