前言
大家好,这里是浩道linux,主要给大家分享linux、python、网络通信相关的it知识平台。
今天浩道跟大家分享运维工作中常常被大家忽略的ssh会话中断背后的一些知识点!
相信大家在工作中常常遇到通过ssh连接到linux服务器一段时间后会自动断开了,但是这时候大家往往不去追究其中的原理,只是习惯性在crt等连接工具中的会话窗口按下回车键再次连接了。本文就让你看看这个断开背后的原理,以及弄清楚其背后的原理后告诉你为什么不能设置永不断开!
1. 概览
有多少次,我们想要保持ssh会话一直处于连接状态,以保持应用程序运行,或者只是避免在返回我们使用的ssh窗口时感到沮丧。在本教程中,你将获得如何通过防止ssh会话超时,直到你关闭终端窗口。
2. 为什么ssh会关闭连接?
我们为了使用ssh登录到服务器上,目的服务器上的守护进程(sshd)一定是保持运行状态。如果ssh客户端一段时间没有发送到目的服务器,服务器会在超过一段时间后关闭连接。
为了防止关闭ssh连接,我们可以在客户端或者服务端进行配置。
3. 设置配置文件
有几个配置文件可以修改,以保持ssh会话的连接,避免超时。要看是从客户端配置还是服务端配置。
3.1 客户端配置
客户端文件位置
$home/.ssh/config
如果我们使用使用 cat $home/.ssh/config ,可能会得到一个错误信息 “no file found”。
$ cat $home/.ssh/configcat: /.ssh/config: no such file or directory
如果我们看到这个错误消息,意味着我们需要手动创建这个配置文件。如果 .ssh 目录不存在,首先创建 .ssh 目录,使用命令 mkdir $home/.ssh 来创建目录,如果提示目录已经存在,我们将会看到一个消息 “file exists”,请忽略即可;如果目录创建成功,我们不会看到任何输出信息。
$ mkdir $home/.ssh然后创建配置文件 touch $home/.ssh/config。$ touch $home/.ssh/config
一旦我们创建好配置文件,我们还需要使用 chmod 修改配置文件的权限,不能让所有人都可以编辑这个配置文件。
$ chmod 600 $home/.ssh/config
现在我们可以任何编辑器来编辑这个配置文件了,比如 nano 或者 vim ,在终端使用 vim $home/.ssh/config 打开配置文件。
现在让我们来添加一些配置信息到配置文件里面。在 vim 按 i 进入编辑模式,然后输入下面的内容:
host example hostname example.com serveraliveinterval 240
上面的配置信息,仅在ssh会议连接到example这个域的时候才会生效。
serveraliveinterval 设置了客户端在发送保持连接信号之前的等待时间。
然后按 esc 键,进入vim的命令模式,连续输入 :wq 保存退出vim编辑器。
另外可以把 example 换成 * 来指定所有的域的配置
host * serveraliveinterval 240
我们可以使用上面同样的步骤来编辑和保存配置文件。
3.2. 服务端配置文件
在某些情况下,我们可能可以访问服务器上的配置文件。如果是这种情况,我们可以配置何时希望服务器关闭ssh连接。
在服务器上编辑配置文件的过程与客户端配置文件类似,但有一些不同。
首先,服务器端配置文件的文件位置是 /etc/ssh/sshd_config ;
现在我们使用 vim 把 clientaliveinterval 添加到配置文件,注意,这里是 client 而不是 server ,跟上面客户端的配置是不一样的。
clientaliveinterval 60
clientaliveinterval 是以秒为单位指定的超时间隔。如果服务器从客户端接收数据的时间超过了超时间隔,则服务器将向客户端发送请求响应的消息。
3.3. 为什么不设置为从不断开连接?
虽然将ssh会话设置为永不断开可能很诱人,但在某些情况下,我们更明智的做法是为ssh设置超时。
如果我们连接的服务器是我们自己维护的服务器,那么设置超时可能没有充分的理由。然而,如果我们在aws e3这样的平台上托管我们的服务器,如果我们不设置超时,代价可能会很高。许多云托管平台使用服务器时每分钟收费,即使我们不积极使用ssh会话,保持ssh会话持续运行也会增加成本。
要在 客户端 上配置超时,我们可以在与上面相同的配置文件中使用serveralivecountmax配置项来设置尝试的次数:
host * serveraliveinterval 240 serveralivecountmax 2
客户端继续每240秒发送一次信号,客户端现在还将侦听来自服务器的信号。如果它两次执行serveraliveinterval而没有收到信号,它将关闭ssh会话。
同样的,我们可以在服务器上做同样的配置:
clientaliveinterval 60 clientalivecountmax 2
注意,服务器上的配置没有 host * 的配置项
4. 结论
在本文中,我们学习了如何在客户端和服务器端计算机上创建ssh设置的配置文件。然后,我们研究了哪些配置可以防止ssh会话超时。最后,总结一下我们不应该将ssh会话设置为永不断开的一些原因。
浅谈过孔滑环的拆卸,它的操作步骤是怎样的
微软Win10创作者更新有啥好处?这些功能全没了
NTT DOCOMO“阿童木”家用机器人可利用头部配备的摄像头进行人脸识别
汽车底盘构造名称图解
固态电池专题研究报告:下一代高性能锂电池
为何SSH会话不能设置为永不断开?
推荐几款性价比高的高清HDMI视频线
三菱PLC类型介绍和编程软件的使用
电平灯制作过程
气体放电的主要形式是哪些_气体放电的主要形式的特点
MCU生态联盟首发,合宙通信&华芯微特共推超值SWM181开发板
Apollo控制算法中使用的车辆动力学模型的推导过程
无线局域网的扩展频谱技术
工业冗余环网交换机的功能特点及应用
你家使用的是智能门锁吗?家用指纹门锁一般多少钱?
浅析汽车电子电磁兼容性问题
机器人头盔的制作教程
IDC:2017年中国可穿戴设备市场十大预测
红外雨量计(光学雨量传感器)检测降雨量,预防内涝
py-spy:用于Python程序的性能监控、分析器