SSH 常见故障定位。
SSH 时等提示输密码等很久
和这种现象类似的,还有使用 Jsch 等 SSH 库时的 ReadTimeout
。
根据这个 回答 以及我自身的经验,一般是两种问题:
- 服务端启用了 reverse DNS lookup,试图将客户端的 IP 反查出域名。这个过程可能耗时很长,而且大部分时间并查不出什么来。可以在服务端的
/etc/ssh/sshd_config
中置UseDNS no
,并重启 sshd 解决 - 客户端及服务端启用了 GSSAPI 鉴权方式(Authentication Method)时,有时候协商过程会持续很久。我不太了解这种方式的具体原理。你可以在客户端的
/etc/ssh/ssh_config
或是~/.ssh/config
中置GSSAPIAuthentication no
。如果你是用软件库进行连接,可以在相应的鉴权方式配置中不启用 GSSAPI