跳到主要内容位置

SSH Host key verification failed:原来是我没输入 yes(真实踩坑复盘)

TL;DR

当 SSH 提示:

Are you sure you want to continue connecting (yes/no/[fingerprint])?

这里没有默认选项

  • 你必须输入 yes 并回车,才会把服务器指纹写入 ~/.ssh/known_hosts
  • 直接回车 = 拒绝 = 立刻断开,然后你就会看到 Host key verification failed.

问题现象:SSH 一直 Host key verification failed

今天我想在另外一台电脑上,把打包好的 Docusaurus 静态网站上传到服务器上。

然后就需要重新配置一下 SSH 链接。
我之前是把服务器的 key 保存到了 iCloud 上,这次就在这台电脑上下载下来用。

在连接的时候,一直报错:

Host key verification failed.
FAIL

具体实际显示如图:

img

看起来很像是 key 的验证问题。

我先确认了一下:

  • IP 地址一样
  • 登录用的 key(pem / 私钥)是同一个
  • 服务器有多个 SSH Host Key(ED25519 / RSA / ECDSA)
  • 其中有一个指纹和客户端提示的完全一致
  • 新电脑本地没有旧的 known_hosts 记录(第一次连接)

按理说,这种情况只要第一次连接的时候确认指纹就可以了。

后来,我发现了,当 SSH 提示这个的时候:

This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])?

我直接按了回车,然后紧接着就是提示:

Host key verification failed.

当时我以为 默认就是 yes,可能前端开发做多了,好多脚手架命令提示默认就是 yes 或者 y,所以这次我也没有手动输入。

真正原因:我没有输入 yes

SSH 在这里没有“默认 yes”的机制。如果直接回车,SSH 会把它当作拒绝,从而终止连接并报错。

SSH 的交互逻辑(为什么回车会失败)

当看到:

Are you sure you want to continue connecting (yes/no/[fingerprint])?

实际行为是:

  • 输入 yes + 回车:接受服务器指纹,并写入 ~/.ssh/known_hosts
  • 输入 no:拒绝
  • 什么都不输入直接回车:当作拒绝
  • Ctrl+C:终止
  • 输入指纹([fingerprint]):接受

也就是说:没有输入 = 拒绝。

正确做法(如何通过验证)

看到提示后,确认指纹无误,然后明确输入:

yes

成功后通常会出现类似信息(不同系统略有差异):

Permanently added 'x.x.x.x' (ED25519) to the list of known hosts.

接下来才会进入真正的登录验证阶段(验证 pem / 用户名)。

指纹怎么“确认无误”?

不要只靠“看起来对”。更安全的方式是从你可信渠道拿到服务器指纹(例如运维记录/控制台/同事确认),再对照提示里的 fingerprint。

如果你想本地查看已记录的指纹:

# 列出 known_hosts 里记录的主机(以及对应 key)
ssh-keygen -F x.x.x.x

# 查看某条记录的指纹(把下面路径替换为 ssh-keygen -F 输出的那行)
ssh-keygen -lf ~/.ssh/known_hosts

顺带澄清几个常见误区

这和 pem/私钥有关系吗?

没有。这个阶段验证的是“服务器是谁”(Host Key),还没轮到验证“你是谁”(你的登录 key)。

服务器需要做什么吗?

不需要。known_hosts 是客户端文件,服务器不参与。

为什么另一台电脑能连?

因为那台电脑早就信任过这台服务器的指纹,SSH 不会再询问,自然也不会触发这次交互。

一句话总结

SSH 的 yes/no 提示没有默认选项。你不输入 yes,就等于拒绝。

如果你遇到:

Are you sure you want to continue connecting (yes/no/[fingerprint])?
Host key verification failed.

先别急着查 pem、别重装系统,先确认:你有没有真的输入 yes。

提示

一系列的课程让你成为高级前端工程师。课程覆盖工作中所有常用的知识点和背后的使用逻辑,示例全部都为工作项目简化而来,学完即可直接上手开发!

即使你已经是高级前端工程师,在课程里也可能会发现新的知识点和技巧,让你的工作更加轻松!

《React 完全指南》课程,包含 React、React Router 和 Redux 详细介绍,所有示例改编自真实工作代码。点击查看详情。

《Vue 3.x 全家桶完全指南与实战课程》课程,包括 Vue 3.x、TypeScript、Vue Router 4.x、Vuex 4.x 所有初级到高级的语法特性详解,让你完全胜任 Vue 前端开发的工作。点击查看详情。

《React即时通信UI实战》课程,利用 Storybook、Styled-components、React-Spring 打造属于自己的组件库。

《JavaScript 基础语法详解》本人所著图书,包含 JavaScript 全面的语法知识和新特性, 可在京东、当当、淘宝等各大电商购买