为什么Linux服务器意外关闭了SSH客户端并杀死了我启动的所有进程?

为什么Linux服务器意外关闭了SSH客户端并杀死了我启动的所有进程?

我使用 CentOS( CentOS release 6.4 (Final)) 上传数据到集群,带宽达到 100MByte/s 左右(网络使用率已满)。此外,还有一个 redis(v=3.2.1) 服务器 (0.0.0.0:6379) 正在运行以维持上传状态。我在后端运行 redis-server(SSH 退出后不退出):

$ (redis-server redis.conf &)

通过从另一个 Linux(名为 jump-server)登录 CentOS,有时(并非总是发生,但经常发生),CentOS 会关闭 SSH 客户端:

Connection to <CentOS-ip> closed by remote host.

添加-vvv选项后ssh -vvv root@centos-ip,当服务器关闭连接时,我会收到更多消息:

$ debug3: Wrote 64 bytes for a total of 11549
debug1: channel 0: free: client-session, nchannels 1
debug3: channel 0: status: The following connections are open:
#0 client-session (t4 r0 i0/0 o0/0 fd 4/5 cc -1)

debug3: channel 0: close_fds r 4 w 5 e 6
Connection to <CentOS-ip> closed by remote host.
Connection to <CentOS-ip> closed.
Transferred: sent 8520, received 82248 bytes, in 474.0 seconds
Bytes per second: sent 18.0, received 173.5
debug1: Exit status -1

redis-server 也消失了!我grep查看了 redis.log(DBEUG 级别),没有错误或崩溃提示。然后我在服务器上启动了一个休眠进程:

# sleep.py
import time
while 1:
    time.sleep(1)

# run as (python sleep.py &)

SSH 关闭后,该进程也消失了!

为什么会发生这种情况?混乱的事实是,我开始的所有过程都消失了!为什么?

导致此问题的原因可能有很多,请给我一些提示,如果需要,我可以提供其他信息来调试该问题。非常感谢。

答案1

路由中间的一些 TCP/IP 堆栈(例如,服务器和终端客户端之间的中间跳数)实际上会导致连接关闭(如果未使用 keepalive 并且未发送连接保持 KeepAlive 数据包):::::尝试:::

ssh -o TCPKeepAlive=yes -o ServerAliveInterval=15 -i ~/MYDIR/id_rsa    ec2-user(or--root)@myserver.com

这有助于你保持联系吗?

相关内容