Linux | 如何保持 SSH 会话处于活动状态

news2024/11/26 21:25:08

在远程服务器管理和安全数据传输中,SSH(Secure Shell)是不可或缺的工具。然而,它的便利性和安全性有时会因常见的问题而受到损害:冻结 SSH 会话。

此外,session 的突然中断可能会导致工作丢失、项目延迟和无助感。但不用担心,因为解决方案就在眼前。这份综合指南[1]揭示了维持活跃且响应迅速的 SSH 连接的秘密,确保无缝体验,避免冻结问题。

因此,告别沮丧,迎接高效、不间断的 SSH 会话。但在我们继续之前,让我们回答一个重要的问题。

为什么 SSH 会关闭连接?

简而言之,这一切都归结于 TCP 超时。 TCP 超时是指 TCP 连接或网络操作在认为进程失败之前等待响应的持续时间。在 Linux 中,TCP 超时设置确定 TCP 连接或操作在假设数据包丢失或连接无响应之前应等待多长时间。这种机制对于确保网络通信的可靠和高效至关重要。在保持 SSH 连接处于活动状态的情况下,我们将在下面简要讨论三个关键系统参数。

  • tcp_keepalive_time:确定在空闲 TCP 连接上发送 TCP keepalive 探测之间的时间间隔。即使没有传输数据,Keepalive 探针也会检查远程对等点是否仍处于活动状态并有响应。
  • tcp_keepalive_probes:由 TCP 端点发送的小数据包,用于检查空闲连接中远程端点的运行状况和响应能力。它检测远程端点是否无法访问或连接是否由于网络问题而丢失。
  • tcp_keepalive_intvl:控制在空闲 TCP 连接上发送 keepalive 探测的时间间隔。

每个值以秒为单位,可以使用以下命令轻松检查。

cat /proc/sys/net/ipv4/tcp_keepalive_time
cat /proc/sys/net/ipv4/tcp_keepalive_probes
cat /proc/sys/net/ipv4/tcp_keepalive_intvl
alt

这是什么意思呢? Keepalive 时间为 7200 秒,即 120 分钟(2 小时)。然而,这并不意味着您的 SSH 会话将保持活动状态 2 小时,因为以下两个参数至关重要。

系统默认设置以 75 秒的间隔发送 9 个探测,总共 675 秒,之后会话被视为失败并关闭。

换句话说,在超过 11 分钟后,您的 SSH 会话将因不活动而终止——即,如果您没有在终端中输入任何内容。

当然,您可以调整这些设置,但这不是正确的方法。 SSH 提供了保持会话活动的机制,我们将在下面向您展示。

如何保持 SSH 会话处于活动状态

保持 SSH 会话处于活动状态是一个涉及客户端和服务器端配置的过程。

Linux

在客户端,您的 Linux 桌面系统,在您的主目录中创建一个文件(如果尚不存在)“~/.ssh/config”。

touch ~/.ssh/config

但是,如果“~/.ssh”目录不存在,则必须创建它,然后设置适当的权限。

mkdir ~/.ssh
chmod 700 ~/.ssh

nano ~/.ssh/config

# 以下为写入内容
Host *
ServerAliveInterval 120
ServerAliveCountMax 30

每个选项的含义如下:

  • Host:指定的配置仅适用于“Host”关键字后面列出的主机。因为我们使用了通配符 (*),所以它们适用于所有主机。
  • ServerAliveInterval:设置一个超时间隔(以秒为单位),在此之后,如果没有从服务器收到数据,SSH 将通过加密通道发送消息来请求服务器响应。默认为0,表示这些消息不会发送到服务器。
  • ServerAliveCountMax:设置 SSH 在没有从服务器返回任何消息的情况下可以发送的服务器活动消息的数量。如果在发送服务器活动消息时达到此阈值,SSH 将与服务器断开连接,从而终止会话。默认值为 3。

也就是说,客户端每隔120秒(2分钟)就会向服务器发送一条keepalive消息,共发送30次。 120 * 30 = 3600 秒,即一小时。这是即使没有活动,我们的 SSH 会话也将保持活动状态的总时间。

Windows

为了保持 SSH 会话处于活动状态,使用 PuTTY 通过 SSH 进行远程访问的 Windows 用户必须将“连接”选项卡中的“保持活动间隔秒数”选项设置为大于零的值。

在下面的示例中,我们将此值设置为 60,这意味着 PuTTY 客户端每分钟都会向服务器发送一条 keepalive 消息,以保持 SSH 连接处于活动状态。

alt

当然,不要忘记保存对 PuTTY 会话的更改(“类别”>“保存的会话”>“保存”)。

服务器端配置

更改服务器的超时选项会影响连接到服务器的所有客户端。您需要编辑“/etc/ssh/sshd_config”文件来执行此操作。

sudo nano /etc/ssh/sshd_config

然后设置以下三个选项:

TCPKeepAlive yes
ClientAliveInterval 120 
ClientAliveCountMax 30
alt

这三个选项的含义如下:

  • TCPKeepAlive:指定系统是否应向客户端发送 TCP keepalive 消息。
  • ClientAliveInterval:设置一个超时间隔(以秒为单位),在此之后,如果没有收到客户端的数据,SSH 服务器将通过加密通道发送消息以请求客户端的响应。默认为0,表示这些消息不会发送到客户端。
  • ClientAliveCountMax:设置在 SSH 服务器未收到客户端返回的任何消息的情况下可以发送的客户端活动消息的数量。如果在发送客户端活动消息时达到此阈值,SSH 服务器将断开客户端连接,从而终止会话。默认值为 3。

与上述客户端配置的情况一样,SSH 服务器将使连接保持一小时(120 * 30 = 3600 秒)。

最后,重新启动 SSH 服务器:

sudo systemctl restart ssh

总结

实现 SSH 超时和保持活动在增强安全性和确保可靠连接之间实现了微妙的平衡。

SSH 超时和保活的好处显而易见,它们可以自动终止空闲会话,从而降低未经授权的访问和潜在攻击的风险,从而对网络安全做出贡献。

另一方面,过分地应用超时和保活也会带来缺点。过于激进的设置可能会导致意外断开连接,从而降低工作效率并给用户带来挫败感。

因此,为了取得适当的平衡,管理员必须仔细考虑他们的网络基础设施和用户行为。这样做可以为远程通信创建一个安全高效的环境,从而提高用户满意度和数据保护。

Reference

[1]

Source: https://linuxiac.com/how-to-keep-ssh-session-alive/

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1160825.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uniapp开发小程序无法上传图片的解决方法

登录小程序后台,第一步菜单栏 设置 第二步,用户隐私保护 更新 第三步 选2 第四步 勾选需要的接口,并说明 等审核通过后,一会就能正常上传图片。

深度学习之基于YoloV5火灾烟雾报警系统(GUI界面)

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、火灾烟雾报警系统四. 总结 一项目简介 YoloV5 是深度学习中用于目标检测的一种算法,可以对输入的图像进行识别,标识出…

nodejs+vue+elementui+python家电销售分析系统设计与实现-计算机毕业设计

系统按照用户的实际需求开发而来,贴近生活。从管理员通过正确的账号的密码进入系统,可以使用相关的系统应用。管理员总体负责整体系统的运行维护,统筹协调。 我们可以利用计算机技术来取代传统的管理模式,实现家电销售分析系统的…

Linux--jdk,tomca,mysql安装、后端项目搭建

一、JDK和Tomcat的安装 1.JDK安装 直接上传到Linux服务器的,上传jdk、tomcat安装包 解压JDK安装包 //解压jdk tar -zxvf jdk-8u151-linux-x64.tar.gz 置环境变量(JAVA_HOME和PATH) vim /etc/profile 在文件末尾添加以下内容: //java environment expo…

在pycharm中配置GPU训练环境(Anaconda)(yolov5)

目录 1. 具体的配置过程: 2. 在指定位置(路径)创建虚拟环境: 3. conda常用命令: 4: 在跑模型时候遇到的一些问题: 4.1: conda添加python解释器找不到对应的python.exe文件 4.2: 报错“OSError: [WinE…

VMware打开centos黑屏解决方法汇总以及解决出现的bug(Centos7系统网络异常等)

VMware打开centos黑屏解决方法汇总 前言:一. VMware打开centos黑屏解决方法汇总一 .情况情况一:情况二情况三 二. 解决方法最简单的方法:一. 以管理员权限在命令行执行1. 管理员身份运行cmd2. 输入“netsh winsock reset”,回车3. 重启电脑即…

【项目源码解析】某3C产品自动光学检测系统

解决方案源码解析思维导图 一、带有桁架机械手的自动光学检测系统介绍 二、关于机械手运动控制(是否需要机器人学方面的知识) 机械手的运动控制不需要深入了解机器人学方面的知识的情况包括: 预配置和任务单一性:如果机械手已经预…

交叉熵损失的“替代品”:基于最优传输思想设计的分类损失函数EMO

©PaperWeekly 原创 作者 | 苏剑林 单位 | 月之暗面 研究方向 | NLP、神经网络 众所周知,分类任务的标准损失是交叉熵(Cross Entropy,等价于最大似然 MLE,即 Maximum Likelihood Estimation),它有着简…

为什么重写 redisTemplate

为什么重写 redisTemplate 1.安装 redis 上传 redis 的安装包tar -xvf redis-5.0.7.tar.gzyum -y install gcc-cmakemake PREFIX/soft/redis installcd /soft/redis/bin./redis-server redis.conf 2. 集成 redisTemplate maven 依赖 <dependency><groupId>org…

React基础源码解析

前言&#xff1a; 前端魔术师卡颂的react学习视频&#xff08;1 搭建项目架构_哔哩哔哩_bilibili&#xff09;中提到了Rodrigo Pombo的一篇react源码教程&#xff1a;Build your own React 本文档分组旨在翻译和记录这篇文章的学习心得&#xff0c;作为react源码学习入门。 …

MySQL笔记--Ubuntu安装MySQL并基于C++测试API

目录 1--安装MySQL 2--MySQL连接 3--代码案例 1--安装MySQL # 安装MySQL-Server sudo apt install mysql-server# 设置系统启动时自动开启 sudo systemctl start mysql # sudo systemctl enable mysql# 检查MySQL运行状态 sudo systemctl status mysql# 进入MySQL终端 sudo…

VR全景在医院的应用:缓和医患矛盾、提升医院形象

医患关系一直以来都是较为激烈的&#xff0c;包括制度的不完善、医疗资源紧张等问题也时有存在&#xff0c;为了缓解医患矛盾&#xff0c;不仅要提升患者以及家属对于医院的认知&#xff0c;还需要完善医疗制度&#xff0c;提高医疗资源的配置效率&#xff0c;提高服务质量。 因…

vue3的ref源码解析

ref的实现原理 一句话总结: ref本身是个函数&#xff0c;该函数返回一个createRef函数&#xff0c;createRef函数又返回一个“经过类RefImpl实例化”的对象。 详情介绍: ref函数接收我们传入的一个简单类型或复杂类型value&#xff0c;后又将value传递给createRef函数&#xf…

【K8S】二进制安装

常见的K8S安装部署方式 ●Minikube Minikube是一个工具&#xff0c;可以在本地快速运行一个单节点微型K8S&#xff0c;仅用于学习、预览K8S的一些特性使用。 部署地址&#xff1a;https://kubernetes.io/docs/setup/minikube ●Kubeadm☆ Kubeadm也是一个工具&#xff0c;提…

利用Docker容器化构建可移植的分布式应用程序

目录 一、什么是Docker容器化 二、构建可移植的分布式应用程序的优势 三、构建可移植的分布式应用程序的步骤 四、推荐一款软件开发工具 随着云计算和容器化技术的快速发展&#xff0c;将应用程序容器化成为构建可移植的分布式应用程序的一种重要方式。Docker作为目前最为…

批量采集各类自媒体平台内容为word文档带图片软件【支持18家自媒体平台的爬取采集】

批量采集各类自媒体平台内容为word文档带图片软件介绍&#xff1a; 1、支持头条号、大鱼号、企鹅号、一点号、凤凰号、搜狐号、网易号、趣头条、东方号、时间号、惠头条、WiFi万能钥匙、新浪看点、简书、QQ看点、快传号、百家号、微信公众号的文章批量采集为docx文档并带图片。…

c++ Templates:The Complete Guide第二版英文版勘误

看到这里的时候觉得不对劲&#xff0c;一查&#xff0c;果然是写错了&#xff0c;Values应该改成Vs 12.4 Page 204, 12.4.2: s/Values is a nontype template parameter pack.../Vs is a nontype template parameter pack.../Page 204, 12.4.2: s/...provided for the templat…

CSS3设计动画样式

CSS3动画包括过渡动画和关键帧动画&#xff0c;它们主要通过改变CSS属性值来模拟实现。我将详细介绍Transform、Transitions和Animations 3大功能模块&#xff0c;其中Transform实现对网页对象的变形操作&#xff0c;Transitions实现CSS属性过渡变化&#xff0c;Animations实现…

嵌入式每日500(3)231103 (总线结构,存储器映射,启动配置,FLASH读、写、擦除介绍,CRC校验,选项字节,)

这里写目录标题 1.总线结构2.STM32F072VBT6存储器映射3.启动配置&#xff08;BOOT0&#xff0c;BOOT1&#xff09;4.FLASH存储器&#xff08;读、写、擦除&#xff09;5.CRC计算单元6.选项字节 1.总线结构 主模块&#xff08;2个&#xff09;Cortex-M0内核、DMA通道从模块&…

20.4 OpenSSL 套接字AES加密传输

在读者了解了加密算法的具体使用流程后&#xff0c;那么我们就可以使用这些加密算法对网络中的数据包进行加密处理&#xff0c;加密算法此处我们先采用AES算法&#xff0c;在网络通信中&#xff0c;只需要在发送数据之前对特定字符串进行加密处理&#xff0c;而在接收到数据后在…