FreeBSD密码登录报错timeout
线上WebShell在执行密码登录FreeBSD 13.0 64位时,报错超时进而开始调研,这里分析下
排查
错误的直接原因是SSH登录超时,查看SSH2模块及具体调用逻辑发现有两种可能性会造成超时
- 有执行键盘交互登录时,用户一直未输入会提示为超时,如果本身网络不通报错会是
ECONNRESET
- SSH握手服务端一直没有响应会触发超时
- 有执行键盘交互登录时,用户一直未输入会提示为超时,如果本身网络不通报错会是
按照当前客户端登录逻辑,虽然客户端有多种登录方式轮流尝试的方式,当前逻辑里开启了键盘交互登录,但能够触发的前提也是公钥登录失败
测试环境保证与线上程序一致的情况下测试发现并复现,而生产环境稳定复现。本地终端比如iTerm2直接登录并不复现该问题。
尝试在生产服务器上直接使用ssh命令
具体计时测试发现,生产服务器上测试直接命令行执行ssh连接,在
20s+
后,报错ssh_exchange_identification: read: Connection reset by peer
。对照上述默认超时时间,也就可以说通了。