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://www.pswp.cn/news/900402.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/900402.shtml
英文地址,請注明出處:http://en.pswp.cn/news/900402.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

學透Spring Boot — 014. Spring MVC的自動配置

這是學透Spring Boot的第14篇文章&#xff0c;更多文章請移步我的專欄&#xff1a; 學透 Spring Boot_postnull咖啡的博客-CSDN博客 目錄 沒有Spring Boot時的Spring MVC 使用Spring Boot后的Spring MVC Spring MVC的自動配置解析 明確目標 入口類 Spring容器的啟動 S…

SQL語句(三)—— DQL

目錄 基本語法 一、基礎查詢 1、查詢多個字段 2、字段設置別名 3、去除重復記錄 4、示例代碼 二、條件查詢 1、語法 2、條件列表常用的運算符 3、示例代碼 三、分組查詢 &#xff08;一&#xff09;聚合函數 1、介紹 2、常見的聚合函數 3、語法 4、示例代碼 &…

LENOVO聯想ThinkBook 16 G6 ABP(21KK)恢復預裝OEM原廠Win11系統鏡像

適用機型&#xff1a;【21KK】 鏈接&#xff1a;https://pan.baidu.com/s/1lbvIh4KTbqm8EZQZfxvNIQ?pwd7vp0 提取碼&#xff1a;7vp0 聯想原裝系統自帶所有驅動、出廠主題壁紙、系統屬性聯機支持標志、Office辦公軟件、聯想瀏覽器、聯想電腦管家、聯想軟件商店、聯想智能引…

# 基于人臉關鍵點的多表情實時檢測系統

基于人臉關鍵點的多表情實時檢測系統 在計算機視覺領域&#xff0c;人臉表情識別技術已經取得了顯著的進展。它不僅可以用于娛樂應用&#xff08;如動態表情包生成&#xff09;&#xff0c;還能在心理健康監測、智能安防、人機交互等領域發揮重要作用。今天&#xff0c;我將分…

在 Ubuntu24.04 LTS 上 Docker Compose 部署基于 Dify 重構二開的開源項目 Dify-Plus

一、安裝環境信息說明 硬件資源&#xff08;GB 和 GiB 的主要區別在于它們的換算基數不同&#xff0c;GB 使用十進制&#xff0c;GiB 使用二進制&#xff0c;導致相同數值下 GiB 表示的容量略大于 GB&#xff1b;換算關系&#xff1a;1 GiB ≈ 1.07374 GB &#xff1b;1 GB ≈ …

SQL Server存儲過程和觸發器的使用

存儲過程 &#xff08;1&#xff09;創建存儲過程&#xff0c;使用Employees表中的員工人數來初始化一個局部變量&#xff0c;并調用這個存儲過程。 1. Create PROCEDURE test number1 int output --輸出參數&#xff0c;可以從程序中返回信息 2. As 3. begin 4. D…

子類是否能繼承

繼承 父類&#xff1a; 子 類 構造方法 非私有 不能繼承 私有&#xff08;private&#xff09;不能繼承 成員變量 非私有 能繼承 私有&…

2025年【山東省安全員C證】考試題及山東省安全員C證考試內容

在當今建筑行業蓬勃發展的背景下&#xff0c;安全生產已成為企業生存與發展的基石。安全員作為施工現場安全管理的直接責任人&#xff0c;其專業能力和資質認證顯得尤為重要。山東省安全員C證作為衡量安全員專業水平的重要標準&#xff0c;不僅關乎個人職業發展&#xff0c;更直…

Spring 中的 bean 生命周期

&#x1f331; 一、什么是 Bean 生命周期&#xff1f; 在 Spring 容器中&#xff0c;一個 Bean 從“創建 → 初始化 → 使用 → 銷毀”&#xff0c;經歷了完整的生命周期。 Spring 提供了 多個擴展點 讓你可以在這些階段做事情&#xff0c;比如注入資源、日志記錄、連接資源、清…

Media streaming mental map

Media streaming is a huge topic with a bunch of scattered technologies, protocols, and formats. You may feel like hearing fragments without seeing the big picture. Let’s build that mental map together — here’s a high-level overview that connects everyt…

AIDD-深度學習 MetDeeCINE 破譯代謝調控機制

深度學習 MetDeeCINE 破譯代謝調控機制 目錄 使用 FEP/REMD 和 DFT 方法準確預測藥物多靶點絕對結合自由能的新途徑。Scorpio 框架利用對比學習優化核苷酸序列表示&#xff0c;提升基因組分析效率&#xff0c;尤其在未知序列的分類和泛化能力上表現出色。LPM 模型整合多模態擾…

【2】搭建k8s集群系列(二進制)之安裝etcd數據庫集群

一、etcd服務架構 Etcd 是一個分布式鍵值存儲系統&#xff0c;Kubernetes 使用 Etcd 進行數據存儲&#xff0c;所以先 準備一個 Etcd 數據庫&#xff0c;為解決 Etcd 單點故障&#xff0c;應采用集群方式部署&#xff0c;這里使用 3 臺組建集群&#xff0c;可容忍 1 臺機器故障…

fastGPT—前端開發獲取api密鑰調用機器人對話接口(HTML實現)

官網文檔鏈接&#xff1a;OpenAPI 介紹 | FastGPT 首先按照文檔說明創建api密鑰 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-sca…

cpp自學 day19(多態)

一、基本概念 同一操作作用于不同的對象&#xff0c;產生不同的執行結果 &#x1f449; 就像「按F1鍵」&#xff1a;在Word彈出幫助文檔&#xff0c;在PS彈出畫筆設置&#xff0c;?同一個按鍵觸發不同功能 &#xff08;1&#xff09;多態類型 類型實現方式綁定時機?靜態多態…

Java 大視界 -- Java 大數據在航天遙測數據分析中的技術突破與應用(177)

&#x1f496;親愛的朋友們&#xff0c;熱烈歡迎來到 青云交的博客&#xff01;能與諸位在此相逢&#xff0c;我倍感榮幸。在這飛速更迭的時代&#xff0c;我們都渴望一方心靈凈土&#xff0c;而 我的博客 正是這樣溫暖的所在。這里為你呈上趣味與實用兼具的知識&#xff0c;也…

人臉考勤管理一體化系統(人臉識別系統,簽到打卡)

人臉考勤管理一體化系統 項目介紹 本項目是基于Flask、SQLAlchemy、face_recognition庫的人臉考勤管理一體化系統。 系統通過人臉識別技術實現員工考勤打卡、人臉信息采集、人臉模型訓練等功能。 項目采用前后端分離的技術框架&#xff0c;基于Flask輕量級Web框架搭建后端服務…

單調棧學習C++

目錄 一&#xff0c;每日溫度 二&#xff0c;下一個更大的元素I 三&#xff0c;下一個更大的元素II 四&#xff0c;接雨水 小結&#xff1a; 單調棧是一種特殊的棧結構&#xff0c;里面的元素按照單調遞增或者遞減的順序排列。常用于解決元素左邊或者右邊比它大或者小的問…

網絡釣魚攻擊的威脅和執法部門的作用(第一部分)

在當今的數字世界中&#xff0c;網絡犯罪分子不斷開發新技術來利用個人、企業和政府機構。 最普遍和最具破壞性的網絡犯罪形式之一是網絡釣魚——一種社會工程手段&#xff0c;用于欺騙人們提供敏感信息&#xff0c;例如登錄憑據、財務數據和個人詳細信息。 隨著網絡釣魚攻擊…

左值與右值,空間與數據

左值是空間&#xff0c;右值是數據 編程總是對“數據”&#xff0c;對"存放數據的空間"操作 a返回一個當前的數據&#xff0c;存放到一個臨時空間中&#xff0c;自身的空間中的數據再進行運算 a直接對自身空間中的數據進行運算 其余知識&#xff1a; 1.變量名的意…

無人機飛行術語科普!

一、基礎操作類 1. 炸機 指無人機意外墜毀或嚴重損壞&#xff08;如撞樹、撞樓、失控摔機等&#xff09;。 例句&#xff1a;“今天風太大&#xff0c;差點炸機&#xff01;” 2. 一鍵放生 調侃某些情況下無人機失控飛丟&#xff0c;無法找回&#xff08;源自某些品牌…