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

SSH批量服务器连通性检查脚本自动绕过主机真实性确认方法

解决SSH首次连接主机真实性确认的自动化问题

我来给你几个靠谱的方案,帮你搞定这个手动输入的麻烦,让脚本完全自动化运行:

方法1:修改SSH配置文件(全局/用户级生效)

你可以通过调整SSH配置,让它自动接受新主机的密钥,一劳永逸解决提示问题:

  • 编辑全局配置文件/etc/ssh/ssh_config(对所有用户生效),或者当前用户的配置文件~/.ssh/config(仅对当前用户生效),添加一行:
    StrictHostKeyChecking no
    
    这样SSH会自动将新主机的密钥加入known_hosts文件,再也不会弹出真实性确认提示。
  • 如果你不想自动添加密钥,只是临时跳过确认(后续连接仍会提示),可以改成:
    StrictHostKeyChecking ask
    
    不过自动化场景更推荐用no来彻底消除交互。

方法2:在SSH命令中添加参数(临时生效)

如果不想修改配置文件,直接给脚本里的SSH命令加个参数就行,只对当前脚本的连接生效:
把你的原脚本修改成这样:

for SERVER in $(cat servers.txt); do 
  ssh -o StrictHostKeyChecking=no root@$SERVER && echo OK $SERVER || echo ERR $SERVER 
done

这里的-o StrictHostKeyChecking=no就是告诉SSH跳过主机密钥检查,直接执行连接操作,完美适配你的批量检查需求。

方法3:提前预加载主机密钥(更安全)

如果担心跳过密钥检查有安全风险(比如可能遭遇中间人攻击),你可以提前把所有目标服务器的主机密钥导入到known_hosts中:

  • 用ssh-keyscan命令批量获取并导入密钥:
    ssh-keyscan -f servers.txt >> ~/.ssh/known_hosts
    
    这个命令会自动读取servers.txt里的所有服务器,获取它们的公钥并添加到你的known_hosts文件里,之后再运行原脚本就不会有任何提示了,安全性更高。

额外小提示

如果你的服务器还没配置SSH密钥登录,脚本运行时可能还要手动输入密码,可以用sshpass工具解决(需要先安装,比如Debian/Ubuntu上执行apt install sshpass),修改后的脚本示例:

for SERVER in $(cat servers.txt); do 
  sshpass -p "你的服务器密码" ssh -o StrictHostKeyChecking=no root@$SERVER && echo OK $SERVER || echo ERR $SERVER 
done

不过密码明文写在脚本里有安全风险,更推荐给所有服务器配置SSH密钥登录,彻底告别密码交互。

内容的提问来源于stack exchange,提问作者VaTo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:59:54