linux ssh客户端默认不自动接受新主机指纹以防范中间人攻击;可通过stricthostkeychecking=no临时跳过验证,或用ssh-keyscan预加载公钥至known_hosts实现安全自动化。

Linux SSH 客户端默认不会自动接受新主机指纹,这是为了防止中间人攻击。但某些自动化场景(比如批量部署、CI/CD 脚本)需要跳过手动确认环节。实现方式有两种主流方法,核心都是绕过或预填充 ~/.ssh/known_hosts 的校验机制。
使用 StrictHostKeyChecking=no 临时跳过验证
这是最直接的方式,适用于单次连接或脚本中临时启用:
- 命令中加入
-o StrictHostKeyChecking=no,SSH 会自动将新主机公钥写入~/.ssh/known_hosts - 示例:
ssh -o StrictHostKeyChecking=no user@192.168.1.10 - 注意:该选项不校验服务器身份,仅适合可信内网环境;生产环境慎用
用 ssh-keyscan 预加载主机公钥
更安全的做法是提前获取并存入 known_hosts,后续连接自然通过校验:
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
- 单台主机:
ssh-keyscan 192.168.1.10 >> ~/.ssh/known_hosts - 多台主机:把 IP 列在文件(如
hosts.txt),再批量执行:ssh-keyscan -f hosts.txt >> ~/.ssh/known_hosts - 可加
-H参数对主机名做哈希处理,增强隐私性(如ssh-keyscan -H 192.168.1.10)
配置 SSH 全局或用户级参数(谨慎启用)
若长期需要自动接受,可在 SSH 配置文件中设置,但务必明确风险边界:
- 编辑
~/.ssh/config或/etc/ssh/ssh_config - 添加段落:
Host 192.168.1.*
StrictHostKeyChecking no
UserKnownHostsFile=/dev/null - 这样只对匹配的 IP 段生效,避免全局放开
补充说明:为什么不能完全关闭指纹校验
SSH 指纹本质是服务器公钥的哈希摘要,用于确认你连的是“真正的目标服务器”,而非被劫持的中间节点。自动接受等于放弃这层身份确认。建议:
- 开发/测试环境可用
StrictHostKeyChecking=no快速调试 - 生产环境优先用
ssh-keyscan预加载,且定期核对指纹变更 - 配合
UserKnownHostsFile=/dev/null可避免写入本地文件,适合无状态容器场景










