设为首页
收藏本站
开启辅助访问
切换到窄版
登录
立即注册
快捷导航
发布信息
搜索
搜索
首页
优惠促销
云服务器
独立服务器
站群服务器
母鸡服务器
服务器托管
全球云服务器
技术文档
联系
每日签到
本版
文章
帖子
用户
主机测评网
»
论坛
›
技术文档
›
其他教程
›
香港云服务器如何保持 SSH 会话不中断? ...
返回列表
发新帖
香港云服务器如何保持 SSH 会话不中断?
[复制链接]
|
主动推送
22
|
0
|
2024-9-11 15:03:23
|
显示全部楼层
|
阅读模式
使用终端(XShell、secureCRT 或 MobaXterm 等)登录 Linux 服务器之后如果有一段时间没有进行交互,SSH 会话就会断开
如果正在执行一些非后台命令,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 30Host:配置仅对 “Host” 关键字后面列出的主机生效。由于使用了通配符 (*),因此它们适用于所有主机ServerAliveInterval:设置超时间隔(以秒为单位),如果没有从 server 接收到数据,SSH 将通过加密通道发送消息,请求 server 响应。默认值为 0,表示不会将这些消息发送到 serverServerAliveCountMax:设置在 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 120ClientAliveCountMax 30TCPKeepAlive:是否应该向 client 发送 TCP keepalive 信息ClientAliveInterval:设置超时间隔(以秒为单位),如果没有从 client 接收到数据,SSH 将通过加密通道发送消息,请求 client 响应。默认值为 0,表示不会将这些消息发送到 clientClientAliveCountMax:设置在 SSH 没有收到任何消息的情况下向 client 发送keepalive 消息的数量。如果达到了该阈值,SSH 将断开与 client 的连接,终止会话(默认值为 3)
与前面讲到的 Linux client 配置一样,server 将保持 SSH 会话一个小时(120 * 30 = 3600s)
配置之后重启 SSH 服务
systemctl restart sshd
回复
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
楚一帆
159
主题
0
回帖
10
积分
新手上路
新手上路, 积分 10, 距离下一级还需 40 积分
新手上路, 积分 10, 距离下一级还需 40 积分
积分
10
加好友
发消息
回复楼主
返回列表
网络技术教程
软件使用教程
Windows教程
Centos教程
Ubuntu教程
Linux其他教程
综合教程
其他教程
其他文档
服务器商家推荐
华夏互联
蓝速云
米图云
全球云
文章
1
苹果电脑MAC系统登录Windows远程桌面
2
Debian拓展硬盘工具。cloud-utils-growpart、xfsprogs
3
安卓Android手机怎么使用V2rayNG?
4
WINDOWS系统电脑怎么使用WINXRAY?
5
notepad++.8.5.7编辑器,代码编辑器
6
DirectX修复工具增强版_V4.3.0.40864版本DLL修复工具C++安装
7
Visual C++运行库合集包完整版VisualCppRedist_AIO_x86_x64
8
ChromeSetup谷歌浏览器一键安装