cloud-sre

iTerm SSH Profile 突然无法登录时的排查

一篇关于 SSH profile 因 too many authentication failures 失败的简短排障笔记。

Jun 15, 2026
SSHiTerm2SREtroubleshooting

一个之前可以正常登录的 iTerm SSH profile,突然打开后马上退出。终端里还出现了 OpenSSH 的 post-quantum key exchange warning,很容易让人以为是服务器 SSH 版本或加密算法的问题。

真正的失败原因不是那条 warning,而是:

Too many authentication failures

这类问题通常发生在本机配置了 ssh-agent、1Password SSH Agent 或多个私钥之后。SSH 客户端会先把 agent 里能用的 key 依次提交给服务器。服务器为了防止暴力尝试,会设置最大认证次数。结果就是:指定的 -i 私钥还没有轮到,服务器就已经断开连接。

排查方法

排查时要把三个层次分开:

  1. 网络是否通:能不能连到目标主机的 22 端口。
  2. 服务器是否响应:有没有 SSH banner、disconnect message 或认证错误。
  3. 认证是否使用了预期的 key:客户端有没有被 agent 里的其他 key 干扰。

如果同一台机器上,下面这种命令失败:

ssh -i "/path/to/key.pem" user@private-host

但加上下面两个参数后成功:

ssh -o IdentitiesOnly=yes -o IdentityAgent=none -i "/path/to/key.pem" user@private-host

就基本可以确认:问题是 agent 提交了太多候选 key,而不是目标主机不可达,也不是指定的私钥完全失效。

修复方式

iTerm profile 里保存的命令应该显式限制 SSH 只使用指定私钥:

ssh -o IdentitiesOnly=yes -o IdentityAgent=none -i "/path/to/key.pem" user@private-host

两个参数的作用是:

  • IdentitiesOnly=yes:只使用命令里显式指定的 identity file。
  • IdentityAgent=none:不要从本机 ssh-agent 或 1Password SSH Agent 里继续拿其他 key。

post-quantum key exchange warning 和这次登录失败不是同一个问题。它表示服务器 SSH 端还没有使用抗量子 key exchange 算法;这是安全升级提示,不是导致会话立即退出的直接原因。