问题背景
无论是使用xshell这样的ssh软件,还是通过Terminal终端,ssh远程连接服务器的时候,长时间不操作,就会自动断开连接,就需要重新进行连接
解决方法
方法一:修改服务器端ssh配置
首先登陆到远程服务器上,打开/etc/ssh/sshd_config
配置文件,找到以下三条配置信息,并修改
# 修改前
#TCPKeepAlive yes
#ClientAliveInterval 0
#ClientAliveCountMax 3
# 修改后
TCPKeepAlive yes
ClientAliveInterval 10
ClientAliveCountMax 5
TCPKeepAlive yes
表示tcp链接保持活跃
ClientAliveInterval 10
表示每10秒向客户端发送一次保持连接的信号
ClientAliveCountMax 5
表示客户端如果5次没有响应,就断开连接。
修改完成后重新启动ssh服务,执行以下命令
sudo systemctl restart sshd
方法二:修改客户端(如果是linux的话)
如果使用ssh链接的客户端也是linux,那么可以配置客户端上的ssh配置文件/etc/ssh/ssh_config
,同样修改成以下内容
# 修改前
#TCPKeepAlive yes
#ClientAliveInterval 0
#ClientAliveCountMax 3
# 修改后
TCPKeepAlive yes
ClientAliveInterval 10
ClientAliveCountMax 5
修改完成后重新启动ssh服务,执行以下命令
sudo systemctl restart sshd
方法三:使用ssh命令参数
在使用ssh命令时,使用ServerAliveInterval参数,设置心跳时间,比如这里设置间隔60秒发送一次心跳包
ssh -o ServerAliveInterval=60 root@IPAddress
但是该命令,只有在本次登录有效,下次进行ssh远程登录保持不断开,依旧需要带上该参数信息