当前位置: 首页 > news >正文

SSH连不上?密钥指纹变更,可能是主机指纹变了!附解决方法

适用场景:内网开发板 / Jetson / 服务器 IP 不变,但ssh user@ip突然失败。
关键词:REMOTE HOST IDENTIFICATION HAS CHANGEDHost key verification failedknown_hosts


一、现象

本机能ping通目标机(例如6.6.7.100),但 SSH 登录失败。过程中可能先后看到两类表现:

表现 A:看起来像密码错了

ssh nvidia@6.6.7.100 nvidia@6.6.7.100's password: Permission denied, please try again.

表现 B:明确报主机身份变更(更关键)

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! ... Offending ED25519 key in /home/<user>/.ssh/known_hosts:5 remove with: ssh-keygen -f "/home/<user>/.ssh/known_hosts" -R "6.6.7.100" Host key for 6.6.7.100 has changed and you have requested strict checking. Host key verification failed.

容易踩坑的一点:下午刚给别的云服务器(如百度云)新生成过~/.ssh/id_ed25519,很容易误以为是「本地私钥被覆盖导致登不上」。
用户登录密钥远端主机密钥是两套东西,别混。


二、结论先说

项目说明
网络ping通则链路基本正常
真正阻塞点本机~/.ssh/known_hosts里缓存的主机指纹,与远端当前 SSH host key 不一致
SSH 行为校验失败时直接中断,不会正常进入后续认证(或表现为各种「登不上」)
和个人密钥关系新生成id_ed25519通常不是本问题的直接原因

一句话:SSH 在确认「这台机器还是不是上次那台」时没过关,所以拒绝连接。


三、原因:两套密钥别搞混

SSH 里至少有两类密钥:

1. 用户密钥(证明「你是谁」)

  • 本地常见文件:~/.ssh/id_ed25519id_ed25519.pub
  • 用途:免密登录、推 Git、连云主机等
  • 你为百度云执行ssh-keygen生成/覆盖的,一般是这一类

2. 主机密钥 / Host Key(证明「这台服务器是谁」)

  • 远端:/etc/ssh/ssh_host_ed25519_key
  • 本机缓存:~/.ssh/known_hosts
  • 第一次连接时,本地会把远端指纹记下来;以后再连必须一致

当远端 host key 变化后,本地仍拿着旧指纹,就会触发:

REMOTE HOST IDENTIFICATION HAS CHANGED! Host key verification failed.

主机密钥为什么会变?

内网板子 / Jetson 上很常见:

  1. 系统重装、刷机、恢复镜像
  2. 重装或重置了openssh-server
  3. 有人重新生成了 SSH host key
  4. 同一个 IP 换成了另一台机器(或另一套系统)

只要指纹变了,严格校验下就会拒绝连接——这是防中间人攻击的正常安全机制,不是随机故障。


四、解决办法

步骤 1:删除该 IP 的旧指纹

按报错提示执行(把 IP 换成你的目标地址):

ssh-keygen-f"$HOME/.ssh/known_hosts"-R"6.6.7.100"

作用:

  • known_hosts删除6.6.7.100对应的旧记录
  • 原内容一般会备份为known_hosts.old

步骤 2:重新连接并确认新指纹

sshnvidia@6.6.7.100

首次会提示类似:

The authenticity of host '6.6.7.100 (6.6.7.100)' can't be established. ED25519 key fingerprint is SHA256:xxxx... Are you sure you want to continue connecting (yes/no/[fingerprint])?

确认是你自己的机器后,输入yes
本机会写入新指纹,之后即可正常登录(密码或密钥认证按你原先配置来)。

步骤 3(可选):若仍认证失败,再查密码/密钥

host key 问题解决后,如果还出现Permission denied,再单独排查:

# 强制只用密码,排除公钥干扰ssh-oPreferredAuthentications=password-oPubkeyAuthentication=no nvidia@6.6.7.100# 看详细认证过程ssh-vvvnvidia@6.6.7.100

常见后续原因:密码输错、账号锁定、远端关闭了密码登录、本地旧用户私钥已被覆盖且远端只认旧公钥等。


五、和「新生成 id_ed25519」的关系

操作影响
ssh-keygen覆盖默认id_ed25519影响用户身份认证;旧私钥丢失则旧免密会失效
known_hosts指纹不匹配影响主机身份校验;连密码提示都可能进不去或直接失败

本次典型链路是:

  1. 远端 host key 已变更(刷机 / 重装 / 换机等)
  2. 本地仍保留旧指纹
  3. SSH 报Host key verification failed
  4. 执行ssh-keygen ... -R <ip>清掉旧记录并重新信任新指纹后恢复

给云服务器配密钥时,建议不要覆盖默认文件名,单独指定:

ssh-keygen-ted25519-f~/.ssh/id_ed25519_baidu-C"baidu"

并在~/.ssh/config里按 Host 分开配置IdentityFile,避免和内网开发板互相干扰。


六、排查清单(可收藏)

  1. ping是否通?不通先查网络 / IP / 网线 / 交换机。
  2. 报错是否含REMOTE HOST IDENTIFICATION HAS CHANGED/Host key verification failed
    • 是 →ssh-keygen -R <ip>,再重连确认指纹。
  3. host key 已更新后仍失败?
    • ssh -vvv看卡在公钥还是密码。
    • 必要时强制密码:PubkeyAuthentication=no
  4. 近期是否覆盖过id_ed25519
    • 若远端只认旧公钥,需重新写入authorized_keys或改用密码登录后补钥。

七、小结

  • Host key verification failed不是密码错,是本机记住的服务器指纹过期了。
  • 解决核心命令:ssh-keygen -f ~/.ssh/known_hosts -R "<ip>",然后重新ssh并接受新指纹。
  • 用户密钥(id_ed25519)≠ 主机密钥(known_hosts;换云主机密钥时尽量用独立文件名,避免误伤日常开发连接。

记录环境示例:Ubuntu 开发机 →nvidia@6.6.7.100(Jetson / Ubuntu 22.04 tegra)。排查思路同样适用于其他 Linux SSH 场景。

http://www.jsqmd.com/news/1297703/

相关文章:

  • Logisim-Evolution 终极指南:从入门到FPGA硬件仿真的完整数字逻辑设计教程
  • C#小数格式化:保留两位小数并补零的完整指南
  • 和平精英地铁逃生拼装人偶第一弹:完整收集攻略与实战技巧
  • Stable Diffusion背后的数学真相(附PyTorch可复现推导链)
  • 2026 年新发布:上虞靠谱的无缝钢管切割加工供货厂家深度解析与优选指南,切出来的管件为何精度差?看完这个操作再也不踩坑了 - 行业推荐官[官方】--
  • Unserialize Again
  • 如何快速实现Atom编辑器中文汉化:完整简体中文菜单解决方案
  • Godot Orchestrator可视化脚本实战:构建灵活NPC对话系统
  • GPT-5.6 Sol性能优化实测:代码生成与内存管理效率提升指南
  • Replit模型选择器:云原生AI开发与开源模型快速部署指南
  • AI生成内容检测与降AI工具核心技术解析
  • 高效内网穿透实战:轻松实现本地服务公开
  • 遥感图像处理入门:从数据获取到分类实战
  • Webswing:零代码改造,将Swing桌面应用无缝迁移至浏览器
  • 游戏开发者日志解析:从武器设计到技术实现全流程
  • 如何快速配置LAN Share:跨平台局域网文件传输完整指南
  • SAP ABAP SELECT语法深度解析:从基础到HANA性能优化实战
  • 大功率步进电机驱动系统设计:从MOSFET选型到控制算法优化
  • 【仅限本周开放】AI工作流诊断报告:输入你的岗位JD,获取定制化降本增效路径(附Gartner认证模板)
  • 火狐浏览器翻译插件全攻略:从云端到本地,打造沉浸式双语阅读体验
  • STM32定时器时钟源深度解析:从内部时钟到外部触发实战
  • Python Pillow图像处理从入门到实战:系统教程与核心操作详解
  • 2026论文隐藏级降AI率工具大曝光:三步直降AIGC率至安全阈值!
  • Nginx外置缓存-error_page
  • C语言学习之二维数组与函数
  • Wand-Enhancer深度解析:免费解锁Wand专业功能的完整技术指南
  • Unity位图字体生成工具:从设计到UI集成的全流程实战
  • Greasy Fork完整指南:5分钟掌握浏览器用户脚本的强大工具箱
  • AI配音重音标注失效的3大隐形陷阱:92%的团队正在踩坑,今天彻底规避
  • 射频SPDT开关核心结构解析:PIN二极管与FET设计原理及应用对比