当前位置: 首页 > news >正文

Visual Studio Code SSH 连接超时对策( keep SSH alive)

文章目录

  • 问题
  • 解决
    • 方法一:配置服务端
      • 关于ClientAliveInterval和ClientAliveCountMax
      • 1、打开终端,打开SSH配置文件:输入以下命令:
      • 2、打开配置文件后,添加以下内容:
      • 3、添加后,Esc按 <Enter>,:wq然后按 Enter 保存更改并关闭编辑器
      • 4、重新启动SSH服务以使设置生效。输入以下命令:
    • 方法二:客户端配置
      • 关于 ServerAliveInterval 和 ServerAliveCountMax
    • 方法三:终端设置
      • 1、首先,安装 tmux:
      • 2、创建一个新的 tmux 会话:
      • 3、开始在新会话中工作。这是您安装 Ruby 的地方。
      • 4、要在工作时暂时退出会话,请按 Ctrl-b 然后 按d
      • 5、重新连接后,使用以下命令重新连接到您的 tmux 会话:

问题

之前我说过完美解决 vscode 多设备通过ssh登录远程服务器免密登录,解决了每次打开vscode可以免密码操纵,那只是第一步。

在开发工作中我们有时会遇到一些问题。问题是某些远程任务(例如大型软件构建或更新)需要很长时间,导致 SSH 连接超时。

我自己在 服务器 上部署 应用程序时遇到了一个问题,Ruby 安装期间 SSH 连接超时。

使用 SSH 连接到远程服务器时,如果长时间处于空闲状态,连接可能会断开。这是因为一些网络设备和服务器关闭了空闲连接,以至于我们每过一会儿打开vscode界面就会存在断开重新自动连接的动画,那么如果我们想一直吊着服务器一直占用连接,本文将提供一些有助于防止此类断开连接的技巧。

解决

方法一:配置服务端

配置 SSH 服务器以维持空闲连接。为此,您需要/etc/ssh/sshd_config在SSH 服务器的配置文件中编辑ClientAliveInterval和ClientAliveCountMax 。

关于ClientAliveInterval和ClientAliveCountMax

“ClientAliveInterval”和“ClientAliveCountMax”是可以在SSH服务器端设置的参数,用于控制连接的空闲超时时间。

ClientAliveInterval
功能:ClientAliveInterval 定义了 SSH 服务器等待的时间(以秒为单位),如果在该时间段内没有从客户端收到任何数据(例如,客户端没有发送命令或数据),服务器将向客户端发送一个 keepalive 信号。

用途:这个设置用于确保 SSH 连接不会因为长时间没有活动而被防火墙或网络设备断开。服务器会定期发送信号,检查客户端是否仍然处于活动状态。

默认值:如果没有显式设置,ClientAliveInterval 默认为 0,表示不会发送任何 keepalive 信号,即没有空闲超时机制。

ClientAliveInterval 60

这表示服务器每 60 秒检查一次客户端是否仍然活跃,如果没有收到客户端的回应,它会发送一个空的信号。

ClientAliveCountMax
功能:ClientAliveCountMax 参数控制在没有收到客户端响应的情况下,服务器可以发送多少次 keepalive 信号。换句话说,这个参数定义了服务器在失去连接时,最多允许的 keepalive 检查次数。

用途:如果客户端没有响应服务器发送的 keepalive 信号,服务器会重复尝试几次,直到达到 ClientAliveCountMax 设置的最大次数。如果超出最大次数,服务器会断开连接。

默认值:默认值为 3,即如果客户端没有响应 3 次 keepalive 信号,服务器将关闭连接。

ClientAliveCountMax 3

这表示服务器最多会向客户端发送 3 次没有响应的 keepalive 信号。如果客户端在这 3 次检查后仍然没有响应,服务器会断开连接。

1、打开终端,打开SSH配置文件:输入以下命令:

sudo vi /etc/ssh/sshd_config

2、打开配置文件后,添加以下内容:

ClientAliveInterval 30
ClientAliveCountMax 60

3、添加后,Esc按 ,:wq然后按 Enter 保存更改并关闭编辑器

在这里插入图片描述

这表示:

ClientAliveInterval 30:每 30秒,服务器会向客户端发送一个空的 keepalive 信号。

ClientAliveCountMax 60:如果客户端在连续 60 次(即 1800 秒内)没有响应 keepalive 信号,服务器将断开连接。

这种配置可以防止由于网络不活动或客户端失去连接导致 SSH 会话挂起,从而确保在长时间不活动时连接能够正常终止。

4、重新启动SSH服务以使设置生效。输入以下命令:

sudo service ssh restart

or

sudo systemctl restart sshd

如果设置项已经存在,则直接改变其值即可。另外,各设置的适当值会根据您的环境而有所不同,因此请根据需要进行调整。

请注意,此设置需要管理权限才能访问 SSH 服务器并进行更改。
另外,由于这是服务器端的设置,因此无法防止由于客户端网络不稳定而导致的连接断开。

方法二:客户端配置

首先,我们将修改 SSH 客户端的配置,通过发送定期的“keep alive”消息来防止连接处于空闲状态。

为此,您需要编辑SSH 服务器的配置文件~/.ssh/config中的ServerAliveInterval和 ServerAliveCountMax

这些选项允许您保持 SSH 连接处于活动状态,即使它们处于空闲状态也不会超时。

在这里插入图片描述

在这里插入图片描述

关于 ServerAliveInterval 和 ServerAliveCountMax

ServerAliveInterval
功能:ServerAliveInterval 参数控制 SSH 客户端等待的时间(以秒为单位),如果在此时间内没有从服务器接收到任何数据(如响应、数据等),客户端将向服务器发送一个 keepalive 信号,目的是保持连接活动。

用途:用于防止 SSH 会话由于长时间没有活动而被中途断开,特别是在 NAT 或防火墙环境中,防止空闲连接被意外断开。

默认值:默认值为 0,即没有空闲时发送 keepalive 信号。

ServerAliveInterval 60

这表示每 60 秒,客户端会向远程服务器发送一次空的 keepalive 信号。

ServerAliveCountMax
功能:ServerAliveCountMax 参数控制 SSH 客户端最多可以发送多少个 keepalive 信号(由 ServerAliveInterval 定义的间隔)而没有收到远程服务器的响应。如果超过这个最大次数,SSH 客户端将断开连接。

用途:此设置可以防止客户端在长时间没有得到响应时无限制地发送 keepalive 信号,而是会在超出最大次数后主动断开连接。

默认值:默认值为 3,即客户端最多发送 3 次没有响应的 keepalive 信号。

ServerAliveCountMax 3

这表示如果客户端在连续 3 次没有收到远程服务器的响应时,客户端将断开连接。

方法三:终端设置

对于终端配置,使用终端多路复用器。 终端多路复用器是一种管理单个物理终端内的多个终端会话的工具。这样,即使您失去连接,您的会话仍可继续,并且允许您在重新连接时返回到同一会话。这次我们将使用终端多路复用器来解决这个问题 tmux

1、首先,安装 tmux:

sudo apt-get install tmux

2、创建一个新的 tmux 会话:

tmux

3、开始在新会话中工作。这是您安装 Ruby 的地方。

4、要在工作时暂时退出会话,请按 Ctrl-b 然后 按d

5、重新连接后,使用以下命令重新连接到您的 tmux 会话:

tmux attach

这样,即使您的 SSH 连接断开,您也可以继续在服务器上工作。重新连接后,tmux attach您只需运行命令即可连接到会话并从上次中断的地方恢复。

之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!


文章转载自:
http://chordotonal.sxnf.com.cn
http://airtel.sxnf.com.cn
http://acrodont.sxnf.com.cn
http://cagy.sxnf.com.cn
http://caudillo.sxnf.com.cn
http://athrocyte.sxnf.com.cn
http://autoecious.sxnf.com.cn
http://amentia.sxnf.com.cn
http://actualite.sxnf.com.cn
http://bryant.sxnf.com.cn
http://cannibal.sxnf.com.cn
http://bohemian.sxnf.com.cn
http://anharmonic.sxnf.com.cn
http://chronogram.sxnf.com.cn
http://amidships.sxnf.com.cn
http://abstemious.sxnf.com.cn
http://catalanist.sxnf.com.cn
http://arthrodic.sxnf.com.cn
http://baseplate.sxnf.com.cn
http://astrolithology.sxnf.com.cn
http://caucasus.sxnf.com.cn
http://cestode.sxnf.com.cn
http://category.sxnf.com.cn
http://brickkiln.sxnf.com.cn
http://alphanumeric.sxnf.com.cn
http://cadmean.sxnf.com.cn
http://according.sxnf.com.cn
http://beadwork.sxnf.com.cn
http://alhambresque.sxnf.com.cn
http://airmail.sxnf.com.cn
http://www.dtcms.com/a/115022.html

相关文章:

  • 【Gorm】连接到数据库
  • 牛客周赛———字符串
  • PHP Cookie
  • 深入理解MySQL:核心特性、优化与实践指南
  • TDengine 从入门到精通(2万字长文)
  • 【C++】list模拟实现
  • MyBatis-Flex关联查询
  • 数字内容体验案例分析的核心指标是什么?
  • 【学Rust写CAD】33 近似 Alpha 混合函数(argb.rs补充方法)
  • 人大金仓数据库dum文件进行备份数据和恢复数据
  • 微前端随笔
  • 架构思维:限流技术深度解析
  • 20250406华南金牌的X99主板突然不能上网的处理流程【RTL8211不稳定】
  • JavaScript Math(算数)
  • 生成式人工智能(AIGC):内容创作的新引擎与新挑战
  • CompletableFuture:整合、超时、完成事件与批量处理
  • 处理甘特图启动依赖报错。
  • vite.config.js常用配置
  • STM32_USB
  • 提升Spring Boot开发效率的Idea插件:Spring Boot Helper
  • 【LLM】DeepResearch系列(Search-R1、Search-o1、R1-Searcher)
  • 大模型最新面试题系列:模型部署(二)
  • io_uring 异步 socket 编程
  • 自动化框架及其设计搭建浅谈(二)--分层自动化测试
  • 浮点数精度问题
  • vue项目中,添加主题皮肤切换功能
  • 负指数二项式展开
  • 【Unity】animator检测某state动画播放完毕方法
  • C高级,终端操作
  • 如何保证RabbitMQ消息的可靠传输?