#干货满满#ssh终端保持会话
  

Hacking 8962人觉得有帮助

{{ttag.title}}
如果正在执行一些非后台命令,SSH 会话断开就可能会使得这些命令可能会被中断,导致任务无法完成
那如何保持 SSH 会话不中断呢?我们来看一下
为什么 SSH 会关闭连接?
简短的回答是,这一切都归结为 TCP 超时。
TCP 超时时间是指 TCP 连接或网络操作在认为进程失败之前等待响应的时间
在 Linux 中,TCP 超时时间设置确定了 TCP 连接或操作在丢包或者连接无响应前应该等待多长时间
TCP 超时机制确保了网络通信的可靠性和效率
在保持 SSH 会话的情况下,有三个关键的系统参数我们需要注意:
  • tcp_keepalive_time:在空闲 TCP 连接上发送 TCP keepalive 探针的间隔时间,即使在没有实际数据传输的情况下。TCP keepalive 探针用于检测远程主机是否仍然存活和响应
  • tcp_keepalive_probes:TCP keepalive 探针,由 TCP 端发送的数据包,用于检查空闲连接中远端的运行状况和响应性。有助于检测远程主机是否变得不可访问,或者连接是否由于网络问题而丢失
  • tcp_keepalive_intvl:控制发送空闲 TCP 连接的 keepalive 探针的时间间隔

我们可以通过下面的命令来查看上面三个参数的值:
[root@localhost ~]# cat /proc/sys/net/ipv4/tcp_keepalive_time600[root@localhost ~]# cat /proc/sys/net/ipv4/tcp_keepalive_probes9[root@localhost ~]# cat /proc/sys/net/ipv4/tcp_keepalive_intvl75
tcp_keepalive_time 为 600 表示保持 TCP 连接时间为 600s 或 10 分钟,但是这并不意味着我们的 SSH 会话就真的会保持 10 分钟
因为 tcp_keepalive_probes 为 9 和 tcp_keepalive_intvl 为 75 表示系统会每隔 75s 发送 9 个探测包(总计 675 s),之后会话将会被视为失败然后关闭
也就是说,在 675s 后,SSH 会话将在不活动时终止,即没有在终端中输入内容
如何保持 SSH 会话
保持 SSH 会话是一个涉及 client 和 server 配置的过程
Linux client 配置
对于 Linux client ,我们在家目录下修改 ~/.ssh/config 文件(如果没有就创建)
vim  ~/.ssh/config
下面是配置
Host *ServerAliveInterval 120ServerAliveCountMax 30
  • Host:配置仅对 “Host” 关键字后面列出的主机生效。由于使用了通配符 (*),因此它们适用于所有主机
  • ServerAliveInterval:设置超时间隔(以秒为单位),如果没有从 server 接收到数据,SSH 将通过加密通道发送消息,请求 server 响应。默认值为 0,表示不会将这些消息发送到 server
  • ServerAliveCountMax:设置在 SSH 没有收到任何消息的情况下向 server 发送keepalive 消息的数量。如果达到了该阈值,SSH 将断开与 server 的连接,终止会话(默认值为 3)

表示 client 每 120s 向 server 发送 keepalive 消息,一共发送 30 次,也就是 120 * 30 = 3600 s(一个小时),在这一个小时内 SSH 会话会一直保持
Windows client 配置
对于 Windows 而言,我们一般使用终端来访问 server
以 secureCRT 为例
选项——>会话选项
然后点击【终端】

Linux server 配置
上面介绍的是 client 端的配置,我们接下来介绍 server 端的配置
修改 /etc/ssh/sshd_config 文件
vim /etc/ssh/sshd_configTCPKeepAlive yesClientAliveInterval 120 ClientAliveCountMax 30
  • TCPKeepAlive:是否应该向 client 发送 TCP keepalive 信息
  • ClientAliveInterval:设置超时间隔(以秒为单位),如果没有从 client 接收到数据,SSH 将通过加密通道发送消息,请求 client 响应。默认值为 0,表示不会将这些消息发送到 client
  • ClientAliveCountMax:设置在 SSH 没有收到任何消息的情况下向 client 发送keepalive 消息的数量。如果达到了该阈值,SSH 将断开与 client 的连接,终止会话(默认值为 3)

与前面讲到的 Linux client 配置一样,server 将保持 SSH 会话一个小时(120 * 30 = 3600s)
配置之后重启 SSH 服务
systemctl restart sshd

打赏鼓励作者,期待更多好文!

打赏
16人已打赏

平凡的小网工 发表于 2023-9-27 22:27
  
多谢分享,有助于工作。
原鹏程 发表于 2023-10-9 14:51
  
感谢楼主分享,努力学习中!!!!!
飞翔的苹果 发表于 2023-10-11 08:19
  
每天学习一点新知识,谢谢分享
奔走的公牛 发表于 2023-10-11 08:47
  
多期待楼主更多的分享。
赵庆煜 发表于 2023-10-14 09:08
  
66666666666666666666
zjwshenxian 发表于 2023-10-15 08:22
  
多谢分享,有助于工作。
wshellym 发表于 2023-10-15 21:11
  
多期待楼主更多的分享。
嘀嘀柠柠 发表于 2023-10-15 23:46
  
每天坚持打卡学习。。
司马缸砸了光 发表于 2023-10-16 19:53
  
每天学习一点新知识,谢谢分享
发表新帖
热门标签
全部标签>
每日一问
技术盲盒
技术笔记
干货满满
技术咨询
产品连连看
新版本体验
功能体验
标准化排查
自助服务平台操作指引
GIF动图学习
2023技术争霸赛专题
通用技术
运维工具
信服课堂视频
秒懂零信任
技术晨报
用户认证
社区帮助指南
答题自测
深信服技术支持平台
安装部署配置
上网策略
SDP百科
设备维护
每日一记
项目案例
玩转零信任
畅聊IT
专家问答
技术圆桌
在线直播
MVP
网络基础知识
升级
安全攻防
测试报告
日志审计
问题分析处理
流量管理
云计算知识
原创分享
解决方案
sangfor周刊
VPN 对接
SANGFOR资讯
专家分享
技术顾问
信服故事
功能咨询
终端接入
授权
资源访问
地址转换
虚拟机
存储
迁移
加速技术
排障笔记本
产品预警公告
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
答题榜单公布
纪元平台
卧龙计划
华北区拉练
天逸直播
以战代练
山东区技术晨报
文档捉虫活动
齐鲁TV
华北区交付直播
每周精选

本版版主

396
135
63

发帖

粉丝

关注

本版达人

新手61940...

本周建议达人

BGP网络

本周分享达人

BGP网络

本周提问达人