现象
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 即可。
