OpenSSH 10 直连 SSH 卡住:nc 能通,ssh 握一半就挂

🛠️工程和算法 0 评 8 度

现象

nc -vz 18.183.X.X 22
# Connection succeeded!

ssh [email protected] -v
# ...
# Local version string SSH-2.0-OpenSSH_10.0p2 ...
# Remote protocol version 2.0 ...
# kex: algorithm: mlkem768x25519-sha256
# expecting SSH2_MSG_KEX_ECDH_REPLY
# (卡住,只能 Ctrl+C)
  • TCP 22 端口通
  • SSH banner 能收到
  • 密钥交换阶段卡住,永远进不了登录

原因

OpenSSH 10 默认优先用 post-quantum 算法 mlkem768x25519-sha256

它比传统的 curve25519-sha256 多传 ~1KB 数据。中间网络(防火墙、NAT、MTU 限制)容易丢这个包,表现就是:握手开始了,但 KEX 回复永远到不了

跟密钥、权限、sshd 配置无关——卡在认证之前。

解决方案

~/.ssh/config 加一行:

Host *
    KexAlgorithms curve25519-sha256

或临时测试:

ssh -o KexAlgorithms=curve25519-sha256 [email protected]

改完立刻能连,~1 秒进 shell。

验证

ssh -G your-host | grep kexalgorithms
# kexalgorithms curve25519-sha256

一句话:OpenSSH 10 默认 PQ 密钥交换包太大,网络路径丢包导致 SSH 卡住;改回 curve25519-sha256 即可。

SSH 能登录,htop 刷几行就卡死
快来做第一个评论的人吧~