Sublime Text的SFTP插件报Host key verification failed是因本地缓存旧SSH主机密钥导致,Windows需删注册表HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys下对应条目,macOS/Linux则执行ssh-keygen -R hostname或手动编辑~/.ssh/known_hosts。

Sublime Text 的 SFTP 插件报 Host key verification failed,不是配置写错了,而是本地缓存了旧的 SSH 主机密钥,服务器重装、IP 变更或域名复用后密钥不匹配,SSH 层直接拒绝连接——删掉缓存就能连上。
Windows 下删 PuTTY 缓存的 Host Key
Sublime 的 SFTP 插件(基于 libssh2)在 Windows 上复用 PuTTY 的密钥存储机制。只要服务器密钥变了,它就卡在这一步,不提示具体路径,只报错。
- 按
Win + R,输入regedit打开注册表编辑器 - 定位到
HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys - 找形如
@22:your-server.com或@22:192.168.1.100的条目(端口+host 组合) - 右键删除该条目,关闭注册表,重启 Sublime 就行
macOS / Linux 下清理 known_hosts
类 Unix 系统下 SFTP 插件走的是 OpenSSH 路径,密钥存在 ~/.ssh/known_hosts 里,和命令行 sftp 或 ssh 共享同一份记录。
- 打开终端,运行
ssh-keygen -R your-server.com(把your-server.com换成实际 host) - 如果用的是 IP,就写
ssh-keygen -R 192.168.1.100 - 也可以手动打开
~/.ssh/known_hosts,删掉对应 host 的那一行(通常含 port 和密钥 hash) - 保存后不用重启 Sublime,下次连接会自动重新协商并存新密钥
为什么改了配置没用?
很多人反复检查 sftp-config.json 里的 host、user、private_key,甚至重装插件,但错误照旧——因为这个错误发生在 SSH 协议握手最开始阶段,根本还没读到你的配置文件。
-
Host key verification failed是底层 SSH 库抛出的,SFTP 插件无法绕过 - 哪怕你配了
password,只要服务器启用了密钥认证(默认行为),SSH 层仍会先校验 host key - 换服务器、重装系统、用新 VPS 镜像,几乎必触发;DNS 解析指向了另一台机器也会中招
避免下次再踩坑
这不是 bug,是 SSH 的安全机制。但开发时频繁换环境,得主动管理 host key 缓存。
- 服务器变更后,第一时间在本地执行
ssh-keygen -R清理(macOS/Linux)或删注册表项(Windows) - 别用 root 直连生产服务器;建议建普通用户 +
sudo权限,这样重装后只需清一次 host key - 如果团队共用同一台跳板机或测试机,提前同步
known_hosts内容比挨个清理更省事
真正麻烦的不是删缓存,而是错误信息里没告诉你缓存在哪——Windows 注册表路径、macOS 的 known_hosts 行号、甚至某些企业环境里还走 SSH agent,都得根据系统环境对症找。


















