解决SSH会话连接超时问题

  目前大多数ssh服务是运行在Linux系统上的sshd服务。当访问终端在windows上时,各终端软件,如,putty,SecureCRT等,大多支持设置向服务器端自动发送消息,来防止终端定期超时。其实,服务器端也支持类似的设置,从服务器的角度防止链接超时。并且,当终端在Ubuntu 等Linux系统上时,客户端也可进行类似设置。

  下面我们就介绍三种防止超时被踢出的方法,后两种情况的设置方法以及通过设置shell变量来达到此目的的方法:

1、 配置服务器

在终端输入:

vi /etc/ssh/sshd_config

修改或添加下面两行:

# 3600秒=1小时
ClientAliveInterval 3600
# 允许超时3次
ClientAliveCountMax 3

  修改/etc/ssh/sshd_config文件,有ClientAliveIntervalClientAliveCountMax的则将它们的参数修改成想要的值,没有的话就自己添加。

  ClientAliveInterval指定了服务器端向客户端请求消息的时间间隔, 默认是0, 不发送.而ClientAliveInterval 60表示每分钟发送一次, 然后客户端响应, 这样就保持长连接了。

  ClientAliveCountMax表示服务器发出请求后客户端没有响应的次数达到一定值, 就自动断开。 正常情况下, 客户端不会不响应,ClientAliveCountMax 设置值为3即可。

重启sshd service:

# Ubuntu下
sudo /etc/init.d/ssh restart
# CentOS下
systemctl restart sshd.service

  重新加载sshd服务。退出客户端,再次登录即可验证。

2、 配置客户端

  先在终端输入:

vi  /etc/ssh/ssh_config

  然后找到里面的ServerAliveInterval参数,如果没有你同样自己加一个就好了,参数意义相同,都是秒数,比如5分钟等(即ServerAliveInterval 300)

下面是man sshd_config获取的描述信息

ClientAliveInterval
Sets a timeout interval in seconds after which if no data has
been received from the client, sshd will send a message through
the encrypted channel to request a response from the client.
The default is 0, indicating that these messages will not be
sent to the client. This option applies to protocol version 2
only.

ClientAliveCountMax
Sets the number of client alive messages (see above) which may
be sent without sshd receiving any messages back from the
client. If this threshold is reached while client alive mes-
sages are being sent, sshd will disconnect the client, terminat-
ing the session. It is important to note that the use of client
alive messages is very different from TCPKeepAlive (below). The
client alive messages are sent through the encrypted channel and
therefore will not be spoofable. The TCP keepalive option
enabled by TCPKeepAlive is spoofable. The client alive mecha-
nism is valuable when the client or server depend on knowing
when a connection has become inactive.

The default value is 3. If ClientAliveInterval (above) is set
to 15, and ClientAliveCountMax is left at the default, unrespon-
sive ssh clients will be disconnected after approximately 45
seconds.

3、echo export TMOUT=1000000 >> /root/.bash_profile; source .bash_profile

  在Linux 终端的shell环境中通过设置环境变量TMOUT来阻止超时。如果显示空白,表示没有设置, 等于使用默认值0, 一般情况下应该是不超时. 如果大于0, 可以在如/etc/profile之类文件中设置它为0.

  Definition: TMOUT: If set to a value greater than zero, the value is interpreted as the number of seconds to wait for input after issuing the primary prompt. Bash terminates after waiting for that number of seconds if input does not arrive

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值