• 搜索
  • 夜间模式
    ©2012-2026  陈十一的小破站 Theme by OneBlog

    陈十一的小破站博客

    搜索
    标签
    # Nodejs # CentOS # Git # Golang # Docker # Windows # Nginx # 反向代理 # 脚本 # Linux
  • 首页>
  • 技术>
  • 正文
  • SSH连接时“WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!”问题解决

    2025年06月05日 834 阅读 0 评论 2512 字

    一、问题现象:警告背后的连接阻断

    当通过SSH(Secure Shell)远程连接服务器或主机时,终端可能会突然弹出醒目的警告信息:

    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
    Someone could be eavesdropping on you right now (man-in-the-middle attack)!
    It is also possible that a host key has just been changed.
    The fingerprint for the ECDSA key sent by the remote host is [具体指纹信息]

    这一警告会直接阻断连接流程,提示用户远程主机的身份标识发生了变更,可能面临中间人攻击风险或正常的密钥更新。

    二、核心原理:SSH的密钥验证机制

    SSH采用公钥加密体系确保连接安全,其核心逻辑如下:

    1. 密钥存储机制
      首次连接主机时,系统会将该主机的公钥(ECDSA/ RSA等类型)自动保存到本地的~/.ssh/known_hosts文件中,形成“信任记录”。
    2. 二次连接校验
      后续再次连接同一主机时,SSH会将远程主机发送的当前公钥与known_hosts中记录的旧公钥进行比对:

      • 若一致:正常建立加密连接;
      • 若不一致:触发警告,阻止连接以避免潜在风险。

    三、常见触发场景与风险分析

    场景分类具体原因安全风险等级典型表现
    正常变更服务器重装系统/更换硬件/手动更新密钥★☆☆☆☆公钥指纹完全更新,无其他异常日志
    配置调整云服务器更换IP后绑定原域名★★☆☆☆域名对应IP变更导致公钥匹配失败
    风险场景中间人攻击(攻击者伪造主机公钥)★★★★★同时出现网络延迟异常、登录失败频繁等现象

    四、分步解决方案:安全清除与重新验证

    步骤1:清除旧公钥记录

    通过ssh-keygen命令删除本地存储的旧公钥,语法格式为:

    ssh-keygen -R [目标主机IP或域名]
    • 示例操作
      若需删除IP为172.20.10.2的主机记录,执行:

      ssh-keygen -R 172.20.10.2

      系统会提示:# Host 172.20.10.2 found: line 4,表示已在known_hosts的第4行找到该记录,并自动备份原文件为known_hosts.old。

    步骤2:重新建立连接并验证

    执行SSH连接命令,此时系统会触发全新的公钥验证流程:

    ssh [用户名]@[目标主机IP或域名]
    • 交互流程

      The authenticity of host '172.20.10.2 (172.20.10.2)' can't be established.
      ECDSA key fingerprint is SHA256:JeDg8EHGx2Bw3X57dt1lntt93sgt005cwd5xioEzHHs.
      Are you sure you want to continue connecting (yes/no)?
      • 输入yes并回车:表示信任当前主机公钥,系统会将新公钥写入known_hosts,完成连接;
      • 输入no:终止连接,需进一步排查公钥变更原因(如联系服务器管理员确认是否为正常操作)。

    五、安全增强建议

    1. 定期审计密钥文件
      定期检查~/.ssh/known_hosts文件,删除不再使用的主机记录,避免冗余密钥堆积。可通过以下命令查看所有记录:

      cat ~/.ssh/known_hosts
    2. 启用严格主机密钥检查
      在~/.ssh/config文件中添加以下配置(若文件不存在需手动创建),强化安全策略:

      Host *
       StrictHostKeyChecking yes
       UserKnownHostsFile ~/.ssh/known_hosts

      该配置会强制要求每次连接时严格校验主机密钥,防止未经授权的变更。

    3. 关注指纹异常
      当警告中显示的公钥指纹与服务器官方提供的指纹不一致时,务必立即停止连接,这可能是中间人攻击的显著特征。

    六、总结

    “WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!”本质上是SSH安全机制的正常响应,其背后可能是良性的配置变更,也可能是潜在的安全威胁。通过合理清除旧密钥、验证新指纹,并结合定期的密钥审计,既能保障连接的稳定性,又能有效抵御网络攻击。在操作过程中,始终遵循“先确认、后操作”的原则,是维护SSH连接安全的核心要点。

    本文著作权归作者 [ 陈十一 ] 享有,未经作者书面授权,禁止转载,封面图片来源于 [ 互联网 ] ,本文仅供个人学习、研究和欣赏使用。如有异议,请联系博主及时处理。
    Linux
    — END —
    Copyright©2012-2026  All Rights Reserved.  Load:0.012 s
    Theme by OneBlog V3.6.5
    夜间模式

    开源不易,请尊重作者版权,保留基本的版权信息。