OpenSSH 服務配置與會話保活完全指南

一、/etc/ssh/sshd_config 配置機制

1. 配置文件基礎

  • 文件作用
    OpenSSH 服務器 (sshd) 的主配置文件,控制連接、認證、端口轉發等行為。

  • 加載與生效

    • 修改后需重啟服務:
      sudo systemctl restart sshd   # Systemd 系統
      sudo service ssh restart     # SysVinit 系統
      
    • 檢查語法錯誤:
      sudo sshd -t
      
  • 語法規則

    • 每行一個參數,格式 參數名 值(如 Port 22
    • # 開頭為注釋,默認配置通常被注釋作為參考
    • 參數名區分大小寫(全大寫或駝峰式)

二、核心參數詳解與配置

1. 連接控制

參數說明推薦值
Port 22SSH 監聽端口,多端口可寫多行非默認端口(如 2222
ListenAddress綁定 IP,0.0.0.0 監聽所有接口內網 IP(如 192.168.1.1
MaxStartups并發未認證連接數,格式 起始:拒絕率:最大10:30:100
MaxSessions單連接允許的會話數5-10

2. 安全認證

參數說明推薦值
PermitRootLogin禁止 root 直接登錄noprohibit-password
PasswordAuthentication禁用密碼登錄,強制密鑰認證no
AllowUsers用戶白名單(支持 user@ip 格式)限制必要用戶
UseDNS禁用反向解析加速登錄no

3. 功能與轉發

參數說明推薦值
AllowTcpForwarding禁止端口轉發減少風險no
X11Forwarding啟用圖形界面轉發yes
GatewayPorts遠程轉發綁定到 0.0.0.0no

4. 會話與日志

參數說明推薦值
TCPKeepAlive啟用 TCP 層保活機制yes
LogLevel日志詳細程度INFO
PrintMotd禁用登錄后 MOTD 信息no

三、SSH 會話長時間保活配置

1. 服務端配置 (sshd_config)

# 保活探針(服務端主動檢測)
ClientAliveInterval 60      # 每 60 秒發送保活包
ClientAliveCountMax 7200    # 允許 7200 次無響應(約 5 天)
TCPKeepAlive yes            # 啟用 TCP 保活# 系統級 TCP 調優(/etc/sysctl.conf)
net.ipv4.tcp_keepalive_time = 300    # 空閑 300 秒后檢測
net.ipv4.tcp_keepalive_intvl = 60    # 檢測間隔 60 秒
net.ipv4.tcp_keepalive_probes = 5    # 檢測 5 次后斷開

2. 客戶端配置 (~/.ssh/config)

Host *ServerAliveInterval 30   # 客戶端每 30 秒發送保活包ServerAliveCountMax 0    # 無限次重試ControlMaster auto       # 連接復用ControlPath ~/.ssh/control-%r@%h:%pControlPersist 1h        # 保持連接池 1 小時

3. 應對網絡設備超時

場景服務端配置客戶端配置
企業防火墻/NATClientAliveInterval 30ServerAliveInterval 25
移動網絡ClientAliveCountMax 2880TCPKeepAlive yes

4. 增強工具與技巧

  • 終端復用工具

    # 使用 tmux 防止斷連
    tmux new -s mysession    # 創建會話
    tmux attach -t mysession # 恢復會話
    
  • 自動重連腳本

    #!/bin/bash
    while true; dossh -o ServerAliveInterval=30 user@hostsleep 10
    done
    

四、完整配置示例

/etc/ssh/sshd_config

# 基礎安全
Port 2222
ListenAddress 192.168.1.100
PermitRootLogin no
PasswordAuthentication no
UseDNS no# 會話保活
ClientAliveInterval 60
ClientAliveCountMax 7200
TCPKeepAlive yes# 功能限制
AllowTcpForwarding no
X11Forwarding yes
MaxSessions 5# 資源控制
MaxStartups 10:30:100

五、調試與驗證

1. 連接狀態檢查

# 查看活躍會話
sudo netstat -tnpa | grep sshd# 實時監控日志
tail -f /var/log/auth.log | grep sshd

2. 保活測試

# 客戶端詳細輸出
ssh -vvv user@host
# 觀察日志中的保活包:
# debug3: Received SSH2_MSG_IGNORE

3. 網絡模擬測試

# 臨時阻斷 SSH 流量(測試后清除規則)
sudo iptables -A INPUT -p tcp --dport 2222 -j DROP
sudo iptables -D INPUT -p tcp --dport 2222 -j DROP

六、安全與資源權衡

  • 風險控制

    • 避免將 ClientAliveCountMax 設為無限大(0
    • 結合防火墻限制 SSH 訪問源 IP
  • 資源管理

    • 通過 MaxSessionsMaxStartups 限制并發
    • 監控 /var/log/secure 異常登錄嘗試
  • 協議更新

    • 定期升級 OpenSSH 版本修復漏洞
    • 禁用舊版協議:Protocol 2

通過合理配置服務端參數、客戶端策略及系統級調優,可實現 SSH 會話的長時間穩定連接,同時兼顧安全性與資源效率。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/82624.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/82624.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/82624.shtml

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

相關文章

阿里云國際版注冊郵箱格式詳解

“為什么我的阿里云國際版注冊總提示郵箱無效?” 這是許多初次接觸阿里云國際版(Alibaba Cloud International)的用戶常遇到的困惑。隨著全球化進程加速,越來越多的企業選擇阿里云國際版部署海外業務,而注冊環節中郵箱…

【IDEA問題】springboot本地啟動應用報錯:程序包不存在;找不到符號

問題: springboot本地啟動應用報錯: 程序包xxx不存在;找不到符號 解決方案: 1.確保用maven重新導入依賴 2.刪除.idea文件夾 3.invalidate caches里,把能選擇的都勾選上,然后清除緩存重啟 4.再在上方工具欄…

FFmpeg 時間戳回繞處理:保障流媒體時間連續性的核心機制

FFmpeg 時間戳回繞處理:保障流媒體時間連續性的核心機制 一、回繞處理函數 /** * Wrap a given time stamp, if there is an indication for an overflow * * param st stream // 傳入一個指向AVStream結構體的指針,代表流信息 * pa…

【b站計算機拓荒者】【2025】微信小程序開發教程 - chapter3 項目實踐 -1 項目功能描述

1 項目功能描述 # 智慧社區-小程序-1 歡迎頁-加載后端:動態變化-2 首頁-輪播圖:動態-公共欄:動態-信息采集,社區活動,人臉檢測,語音識別,心率檢測,積分商城-3 信息采集頁面-采集人數…

5.27 day 30

知識點回顧: 導入官方庫的三種手段導入自定義庫/模塊的方式導入庫/模塊的核心邏輯:找到根目錄(python解釋器的目錄和終端的目錄不一致) 作業:自己新建幾個不同路徑文件嘗試下如何導入 一、導入官方庫 我們復盤下學習py…

【GitHub Pages】部署指南

vue項目 編輯你的 vite.config.ts 文件,加上 base 路徑,設置為你的 GitHub 倉庫名 import { defineConfig } from vite import vue from vitejs/plugin-vue// 假設你的倉庫是 https://github.com/your-username/my-vue-app export default defineConfi…

遠程控制技術全面解析:找到適合你的最佳方案

背景:遠程控制為何成為企業核心需求? 隨著企業數字化轉型的推進,遠程控制技術已成為異地辦公和運維的關鍵工具。無論是跨國企業需要高效管理全球設備,還是中小型企業追求經濟高效的解決方案,選擇合適的遠程控制技術&a…

觸覺智能RK3506星閃開發板規格書 型號IDO-EVB3506-V1

產品概述 觸覺智能RK3506星閃開發板,型號IDO-EVB3506-V1采用 Rockchip RK3506(三核 Cortex-A7單核Cortex-M0, 主頻最高1.5GHz)設計的評估開發板,專為家電顯控、顯示HMI、手持終端、工業IOT網關、工業控制、PLC等領域而設計。內置…

九級融智臺階與五大要素協同的量子化解析

九級融智臺階與五大要素協同的量子化解析 摘要:本文構建了一個量子力學框架下的九級融智模型,將企業創新過程映射為量子能級躍遷。研究發現五大要素協同態決定系統躍遷概率(P∣?Ψ_m∣H_協同∣Ψ_n?∣^2),當要素協同…

Kotlin學習34-data數據類1

定義如下:與普通類對比學習 //普通類 class NormalClass(val name: String, val age: Int, val sex: Char) //數據類 data class DataClass(val name: String, val age: Int, val sex: Char)對應找到java反編譯的代碼路徑:Tool-->Kotlin-->Show K…

博圖SCL基礎知識-表達式及賦值運算

S7-1200 從 V2.2 版本開始支持 SCL 語言。 語言元素 SCL 除了包含 PLC 的典型元素(例如,輸入、輸出、定時器或存儲器位)外,還包含高級編程語言表達式、賦值運算和運算符。 程序控制語句 SCL 提供了簡便的指令進行程序控制。例…

海思3519V200ARM Linux 下移植 Qt5.8.0

一、移植背景及意義 海思3519V200是一款基于ARM架構的嵌入式芯片,廣泛應用于智能安防、工業控制等領域。在這些應用場景中,對設備的圖形用戶界面(GUI)有著越來越高的要求。Qt5.8.0作為一個功能強大、跨平臺的GUI開發框架,能夠幫助開發者快速開發出美觀、高效的用戶界面。…

msql的樂觀鎖和冪等性問題解決方案

目錄 1、介紹 2、樂觀鎖 2.1、核心思想 2.2、實現方式 1. 使用 version 字段(推薦) 2. 使用 timestamp 字段 2.3、如何處理沖突 2.4、樂觀鎖局限性 3、冪等性 3.1、什么是冪等性 3.2、樂觀鎖與冪等性的關系 1. 樂觀鎖如何輔助冪等性&#xf…

成都鼎訊--通信信號模擬設備?

在現代電磁通信領域,精準模擬復雜多變的信號環境,是提升通信裝備性能與人員作戰能力的核心命題。成都鼎訊以技術創新為驅動,憑借深厚的研發實力,重磅推出通信信號模擬設備,以前所未有的強大功能與卓越性能,…

C# Windows Forms應用程序-003

目錄 項目結構 命名空間和類定義 主要控件 GroupBox 控件 Label 控件 TextBox 控件 Button 控件 OpenFileDialog 控件 方法說明 構造函數 Form1() Dispose(bool disposing) Main() InitializeComponent() button1_Click(object sender, System.EventArgs e) but…

【C/C++】死鎖的四大條件與預防策略詳解

文章目錄 死鎖的四大條件與預防策略詳解一、死鎖的產生條件(四個必要條件)二、代碼示例三、死鎖的預防手段(以 C/C 為例)1. 破壞“循環等待” —— 統一加鎖順序(推薦)2. 使用 std::lock 一次性加多個鎖3. …

Rust編程環境安裝

文章目錄 Rust編程環境安裝一、安裝準備二、安裝步驟對于Linux/macOS用戶對于Windows用戶 三、驗證安裝四、環境配置檢查五、工具鏈管理六、附加功能七、常見問題處理八、編輯器支持九、其他 Rust編程環境安裝 一、安裝準備 1. 支持系統:Windows/Linux/macOS 2. 所…

OpenHarmony平臺驅動使用(五),HDMI

OpenHarmony平臺驅動使用(五) HDMI 概述 功能簡介 HDMI(High Definition Multimedia Interface),即高清多媒體接口,主要用于DVD、機頂盒等音視頻Source到TV、顯示器等Sink設備的傳輸。 HDMI以主從方式工…

【Git】Commit Hash vs Change-Id

文章目錄 1、Commit 號2、Change-Id 號3、區別與聯系4、實際場景示例5、為什么需要兩者?6、總結附錄——Gerrit 在 Git 和代碼審查工具(如 Gerrit)中,Commit 號(Commit Hash) 和 Change-Id 號 是兩個不同的…

leetcode hot100刷題日記——21.不同路徑

和20題一樣的思路link 題解&#xff1a; class Solution { public:int dfs(int i,int j,vector<vector<int>>&memo){//超過了邊界&#xff0c;return 0if(i<0||j<0){return 0;}//從&#xff08;0&#xff0c;0&#xff09;到&#xff08;0&#xff0c;0…