专栏首页后场技术Fix SSH客户端登录会话超时设置

Fix SSH客户端登录会话超时设置

通常默认公有云上的ECS远程连接,很容易断开,当你有什么事情被打断或者去操作别的机器同步做点其他事情,你会发现你SSH客户端登录窗口经常会断开掉,非常烦人,经常要重新登录。

如果用一些Windows下客户端软件比如XShell or CRT都会有超时时间和心跳检测次数设置,但是默认Mac下的终端 Or Linux下直接远程命令客户端是没有这个设置窗口的。

没事菜菜有办法,下面就教你正确姿势?

1. Client端设置

万事先从本身先思考,如果能够先搞自己,就别搞别人,因为搞C你很容易负责,搞S搞坏了,那有时候就会很蛋疼,因为一般S会跑一些业务,C坏了,大不了一起从头再来,至少自己做的饭在难吃,你也会美美的吃掉,S坏了有可能你就要付出惨痛的代价, 所以先搞C端是比较Nice的选择。

SSH Client会从以下途径获取配置参数:

  1. SSH命令行参数;
  2. 用户配置文件 (~/.ssh/config);
  3. 系统配置文件 (/etc/ssh/ssh_config)。

姿势1

ssh -o ServerAliveInterval=60 -o ServerAliveCountMax=30 root@10.0.1.25 -p22

姿势2

$ vim ~/.ssh/config #添加如下内容
Host *
 ServerAliveInterval 60
 ServerAliveCountMax 30

姿势3

$ vim /etc/ssh/ssh_config # 在Host *下面添加:

Host *
       SendEnv LANG LC_*
       ServerAliveInterval 60
       ServerAliveCountMax 30

如果三个都设置了读取顺序是否是姿势1 ---> 姿势2 ---> 姿势3:

说明:

本地SSH Client每隔60s向Server端SSHD发送 keep-alive 包,如果发送30次, Server端还无回应则断开连接。

Server端设置

SSH Server在这里就是服务器端的sshd服务(类Unix的系统都有),可以通过修改sshd的配置文件来改变SSH Session的超时时间:

vim /etc/ssh/sshd_config

然后找到下面两项:

ClientAliveInterval 60
ClientAliveCountMax 30

这两项默认可能是注释掉的,去掉#,然后如上设置.

说明:

  • ClientAliveInterval: 这个其实就是SSH Server与Client的心跳超时时间,也就是说,当客户端没有指令过来,Server间隔ClientAliveInterval的时间(单位秒)会发一个空包到Client来维持心跳,60表示每分钟发送一次,然后客户端响应,这样就保持长连接了保证Session有效, 默认是0, 不发送;
  • ClientAliveCountMax:当心跳包发送失败时重试的次数,比如现在我们设置成了30,如果Server向Client连续发30次心跳包都失败了,就会断开这个session连接。

更多参考man ssh_config:

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

The default value is 3. If, for example, ServerAliveInterval (see below) is set to 15 and ServerAliveCountMax is left at the default, if the server becomes unresponsive, ssh will disconnect after approximately 45 seconds. This option applies to protocol version 2 only; in protocol version 1 there is no mechanism to request a response from the server to the server alive messages, so disconnection is the responsibility of the TCP stack.

ServerAliveInterval Sets a timeout interval in seconds after which if no data has been received from the server, ssh(1) will send a message through the encrypted channel to request a response from the server. The default is 0, indicating that these messages will not be sent to the server, or 300 if the BatchMode option is set. This option applies to protocol version 2 only. ProtocolKeepAlives and SetupTimeOut are Debian-specific compatibility aliases for this option.

本文分享自微信公众号 - 后场技术(opstalk),作者:诺克大叔

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-07-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Zookeeper节点工作流介绍

    在文章Zookeeper体系介绍中,我们讨论了ZooKeeper中的术语。在这篇Zookeeper文章中,我们将详细了解Zookeeper Workflow的完...

    后场技术
  • 认清Python下==和is的区别

    通常在Python语言中我们判断两个字符串是否相等的时候,很多同学在初学Python的时候会混用==和is,最后造成的结果就是出错的时候不知道怎么定位,结果也让...

    后场技术
  • Kubernetes架构简介

    在Docker容器技术中,通过容器,我们可以很方便的将我们的应用程序打成一个镜像,然后无论我们在哪部署应用,只要这个环境支持Docker,那么我们都可以通过Do...

    后场技术
  • Ubuntu19.10开启ssh服务(详细过程)

    Ubuntu开启个ssh竟然花了我一个多小时,主要是一开始看的教程步骤不详细,然后我开启的是一个一万多的主机,开关机都挺慢的,在这里记录下详细步骤,方便自己以后...

    砸漏
  • Python每天五分钟-搭建简单的WEB服务器

    WSGI协议是描述服务器如何与客户端通信的一种协议或者规范。 要搭建一个服务器需要实现一个application(environ, start_respons...

    用户2475223
  • ssh服务

    若与
  • 通过跳板机管理多个ssh会话

    为了加强服务器的安全性,一般情况下,服务器的登陆管理都通过跳板机(或堡垒机)进行管理和维护,内网的之间的ssh并不对外开放.

    明哥的运维笔记
  • 使用已有的私钥进行GitHub验证

    之前在Linux中已经生成了ssh密钥对,并且也配置好了与GitHub仓库的连接,然后想在windows上也连接一下GitHub仓库,于是把生成好的私钥先存储到...

    端碗吹水
  • Code Forces 644B Processing Queries

    B. Processing Queries time limit per test5 seconds memory limit per test256 ...

    ShenduCC
  • Kali开启ssh

    参考资料:https://www.cnblogs.com/chenlove/p/8624747.html

    墨文

扫码关注云+社区

领取腾讯云代金券