我使用的是Ubuntu14.04.4服务器,运行sshd OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.8, OpenSSL 1.0.1f 6 Jan 2014
。
该服务器还运行Intel的DPDK框架,以开发网络软件;其中的一部分工作包括降低Linux级别的接口,将它们绑定到DPDK。然而,用于从外部使用ssh的网络接口从来没有被打开或下降,只有其他的被触摸。
大多数情况下ssh工作正常,但每隔几天就会停止工作;ssh会话被中断,并试图通过运行ssh -v
重新连接到消息Local version string SSH-2.0 ...
(即客户端可以建立连接,失败的是SSH部分)。
直接连接到机器也不起作用,命令行界面不显示,只是一个空白的屏幕。
可以建立TCP连接,并且机器仍然响应pings。
这非常烦人,因为服务器随后需要重新启动。
我在服务器上启用了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
这个日志似乎与成功连接的日志没有什么不同,只是它停止在那里,而成功的连接继续(下一行是debug1: inetd sockets after dupping: ...
)。
当接口与DPDK绑定或解除绑定时,问题似乎就出现了。
是什么导致了这一切?有解决办法吗?
发布于 2017-01-21 19:45:36
我对ssh超时有问题,我通过使用以下方法找到了解决办法:
sudo sysctl -w net.ipv4.tcp_keepalive_time=50 \
net.ipv4.tcp_keepalive_intvl=10 \
net.ipv4.tcp_keepalive_probes=5
https://askubuntu.com/questions/872508
复制相似问题