我正在使用运行 sshd 的 Ubuntu 14.04.4 服务器OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.8, OpenSSL 1.0.1f 6 Jan 2014。
该服务器还运行英特尔的DPDK框架,用于开发网络软件;这样做的一部分涉及在 Linux 级别关闭接口以将它们绑定到 DPDK。但是,用于从外部 ssh 的网络接口永远不会被打开或关闭,只会触及其他人。
大多数时候 ssh 工作正常,但每隔几天它就会停止工作;ssh 会话被中断,并尝试通过ssh -v在消息处运行暂停来重新连接Local version string SSH-2.0 ...(即客户端可以建立连接,这是 SSH 部分失败)。
直接连上机器也不行,命令行界面不显示,白屏。
可以建立 TCP 连接,并且机器仍然应答 ping。
这很烦人,因为然后需要重新启动服务器。
我在服务器上启用了 debug3 日志,/var/log/auth.log当客户端尝试(并失败)连接时的登录如下所示:
sshd[1688]: debug3: fd 5 is not O_NONBLOCK
sshd[1688]: debug1: Forked child 39149.
sshd[1688]: debug3: send_rexec_state: entering fd = 13 config len 724
sshd[1688]: debug3: ssh_msg_send: type 0
sshd[1688]: debug3: send_rexec_state: done
sshd[39149]: debug3: oom_adjust_restore
sshd[39149]: Set /proc/self/oom_score_adj to 0
sshd[39149]: debug1: rexec start in 5 out 5 newsock 5 pipe 12 sock 13
Run Code Online (Sandbox Code Playgroud)
此日志似乎与成功连接的日志没有任何不同,只是它停在那里,而成功的连接会继续(下一行是 then debug1: inetd sockets after dupping: ...)。
当接口从 DPDK 绑定或解除绑定时,问题似乎就出现了。
什么可能导致这种情况?有解决方法吗?
我遇到了 ssh 超时问题,我找到了解决方法:
sudo sysctl -w net.ipv4.tcp_keepalive_time=50 \
net.ipv4.tcp_keepalive_intvl=10 \
net.ipv4.tcp_keepalive_probes=5
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
142 次 |
| 最近记录: |