要使SSH会话保持不断开,可以采取以下几种方法:
screen
或tmux
工具:screen
和tmux
是终端复用器,允许您在一个终端窗口中运行多个会话。如果连接断开,您可以重新连接并恢复会话。
例如,使用screen
:
screen
(如果尚未安装):sudo apt-get install screen # 对于Debian/Ubuntu系统
sudo yum install screen # 对于RHEL/CentOS系统
screen
会话:screen -S your-session-name
断开连接时,按Ctrl
+A
,然后按D
。
重新连接会话:
screen -r your-session-name
nohup
命令:nohup
命令使进程忽略挂起(SIGHUP)信号,从而在SSH连接断开后继续运行。
例如:
nohup your-command &
这将使your-command
在后台运行,并将输出重定向到名为nohup.out
的文件。
autossh
:autossh
是一个自动重新建立SSH连接的工具。首先安装autossh
:
sudo apt-get install autossh # 对于Debian/Ubuntu系统
sudo yum install autossh # 对于RHEL/CentOS系统
然后使用以下命令启动SSH会话:
autossh -M 0 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" user@hostname
这将每30秒发送一次保活信号,如果连续3次未收到响应,将尝试重新连接。
可以通过调整TCP Keepalive设置来检测空闲连接并自动发送数据包以保持连接。
例如,在Linux系统中,可以编辑/etc/sysctl.conf
文件,添加以下行:
net.ipv4.tcp_keepalive_time = 60
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_probes = 5
然后运行sudo sysctl -p
使更改生效。
这些方法可以帮助您保持SSH会话不断开。但请注意,长时间保持连接可能会导致服务器端超时。因此,请根据实际需求选择合适的方法。