SSH 服務部署指南

在這里插入圖片描述

本指南涵蓋 OpenSSH 服務端的安裝、配置密碼/公鑰/多因素認證,以及連接測試方法。
適用系統:Ubuntu/Debian、CentOS/RHEL 等主流 Linux 發行版。


1. 安裝 SSH 服務端

Ubuntu/Debian
# 更新軟件包索引
sudo apt update# 安裝 OpenSSH 服務端
sudo apt install openssh-server -y# 啟動服務并設置開機自啟
sudo systemctl enable --now ssh
CentOS/RHEL
# 安裝 OpenSSH 服務端
sudo yum install openssh-server -y# 啟動服務并設置開機自啟
sudo systemctl enable --now sshd
驗證安裝
# 檢查服務狀態
sudo systemctl status ssh   # Ubuntu/Debian
sudo systemctl status sshd  # CentOS/RHEL# 查看 SSH 端口監聽
ss -tnlp | grep ssh

2. 基礎配置 SSH 服務

編輯配置文件
sudo nano /etc/ssh/sshd_config
關鍵配置項(按需修改)
# 修改默認端口(可選,避免暴力破解)
Port 2222# 禁用 root 登錄(安全建議)
PermitRootLogin no# 允許用戶列表(為空表示允許所有用戶)
AllowUsers alice bob# 禁用密碼認證(推薦使用公鑰后關閉)
PasswordAuthentication no# 啟用公鑰認證
PubkeyAuthentication yes# 指定公鑰存儲路徑
AuthorizedKeysFile .ssh/authorized_keys# 配置日志級別
LogLevel VERBOSE
重啟 SSH 服務生效
# Ubuntu/Debian
sudo systemctl restart ssh# CentOS/RHEL
sudo systemctl restart sshd

3. 配置認證方式

3.1 密碼認證

默認已啟用,如需禁用請設置 PasswordAuthentication no

3.2 公鑰認證
客戶端生成密鑰對
# 在客戶端機器執行
ssh-keygen -t ed25519 -C "your_email@example.com"
# 默認保存路徑:~/.ssh/id_ed25519(私鑰)和 ~/.ssh/id_ed25519.pub(公鑰)
上傳公鑰到服務端
# 方法 1:使用 ssh-copy-id 自動上傳
ssh-copy-id -p 22 -i ~/.ssh/id_ed25519.pub user@server_ip# 方法 2:手動追加公鑰到 ~/.ssh/authorized_keys
cat ~/.ssh/id_ed25519.pub | ssh user@server_ip "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
驗證權限

服務端用戶目錄權限必須為:

  • ~/.ssh700
  • ~/.ssh/authorized_keys600
# 修復權限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
3.3 多因素認證(MFA)
安裝 Google Authenticator
# Ubuntu/Debian
sudo apt install libpam-google-authenticator -y# CentOS/RHEL
sudo yum install google-authenticator -y
生成 TOTP 密鑰
google-authenticator
# 按提示操作,保存緊急備用碼,選擇基于時間的令牌
配置 PAM 模塊
sudo nano /etc/pam.d/sshd

添加以下行:

auth required pam_google_authenticator.so
修改 SSH 配置
sudo nano /etc/ssh/sshd_config

確保以下配置:

ChallengeResponseAuthentication yes
AuthenticationMethods publickey,keyboard-interactive
重啟 SSH 服務
sudo systemctl restart ssh   # Ubuntu/Debian
sudo systemctl restart sshd  # CentOS/RHEL

4. 防火墻配置

開放 SSH 端口
# Ubuntu/Debian (UFW)
sudo ufw allow 22/tcp   # 若修改了端口,替換為實際端口號
sudo ufw reload# CentOS/RHEL (Firewalld)
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload

5. 測試 SSH 連接

基本連接測試
# 使用密碼認證
ssh -p 22 user@server_ip# 使用公鑰認證(指定私鑰路徑)
ssh -p 22 -i ~/.ssh/id_ed25519 user@server_ip# 使用 MFA 認證(先公鑰后 TOTP)
ssh -p 22 user@server_ip
# 連接時會提示輸入驗證碼
調試連接問題
# 客戶端開啟詳細日志
ssh -vvv user@server_ip# 查看服務端日志
sudo tail -f /var/log/auth.log        # Ubuntu/Debian
sudo tail -f /var/log/secure          # CentOS/RHEL

6. 安全加固建議

  1. 禁用弱加密算法
    /etc/ssh/sshd_config 中添加:

    Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com
    MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com
    
  2. 限制用戶訪問

    AllowUsers alice bob  # 僅允許特定用戶
    DenyUsers root       # 禁止特定用戶
    
  3. 啟用 Fail2ban

    # 安裝 Fail2ban
    sudo apt install fail2ban -y       # Ubuntu/Debian
    sudo yum install fail2ban -y       # CentOS/RHEL
    
  4. 定期更新系統

    sudo apt update && sudo apt upgrade -y   # Ubuntu/Debian
    sudo yum update -y                       # CentOS/RHEL
    

7. 常見問題解決

問題 1:公鑰認證失敗
  • 檢查項
    • 服務端 ~/.ssh/authorized_keys 文件權限是否為 600
    • 客戶端私鑰權限是否為 600
    • SSH 配置中 PubkeyAuthentication 是否為 yes
問題 2:MFA 認證不生效
  • 檢查項
    • PAM 配置 /etc/pam.d/sshd 是否包含 pam_google_authenticator.so
    • SSH 配置中 AuthenticationMethods 是否設置為 publickey,keyboard-interactive
問題 3:連接超時
  • 檢查項
    • 防火墻是否開放 SSH 端口。
    • 服務端 SSH 服務是否運行。
    • 網絡路由是否可達(使用 pingtraceroute 測試)。

通過本指南,您已掌握 Linux 下 SSH 服務的完整配置與管理方法。根據實際需求靈活選擇認證方式,并遵循安全最佳實踐,可顯著提升系統的遠程訪問安全性。

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

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

相關文章

《Python星球日記》 第46天:決策樹與隨機森林

名人說:路漫漫其修遠兮,吾將上下而求索。—— 屈原《離騷》 創作者:Code_流蘇(CSDN)(一個喜歡古詩詞和編程的Coder??) 專欄:《Python星球日記》,限時特價訂閱中ing 目錄 一、前言二、決策樹算法原理1. 決策樹簡介2. 決策樹的分裂準則(1) 信息熵與信息增益(2) 基尼不純…

Vue2:引入公共JS,通過this調用

tools.js // 圖片加上前綴 baseurl 是請求域名 img 是圖片路徑export function getimgurl(img) {return ${this.$baseurl}${img}}main.js import baseUrl from "/api/baseUrl.js" Vue.prototype.$baseurl baseUrlimport {getimgurl} from /api/tool.js; Vue.protot…

【Hot 100】 146. LRU 緩存

目錄 引言LRU 緩存官方解題LRU實現📌 實現步驟分解步驟 1:定義雙向鏈表節點步驟 2:創建偽頭尾節點(關鍵設計)步驟 3:實現鏈表基礎操作操作 1:添加節點到頭部操作 2:移除任意節點 步驟…

【Linux】swap交換分區管理

目錄 一、Swap 交換分區的功能 二、swap 交換分區的典型大小的設置 2.1 查看交換分區的大小 2.1.1 free 2.1.2 cat /proc/swaps 或 swapon -s 2.1.3 top 三、使用交換分區的整體流程 3.1 案例一 3.2 案例二 一、Swap 交換分區的功能 計算機運行一個程序首先會將外存&am…

【計算機網絡】用戶從輸入網址到網頁顯示,期間發生了什么?

1.URL解析 瀏覽器分解URL:https://www.example.com/page 協議:https域名:www.example.com路徑:/page 2.DNS查詢: 瀏覽器向DNS服務器發送查詢請求,將域名解析為對應的IP地址。 3.CDN檢查(如果有)&#…

架空輸電線巡檢機器人軌跡優化設計

架空輸電線巡檢機器人軌跡優化 摘要 本論文針對架空輸電線巡檢機器人的軌跡優化問題展開研究,綜合考慮輸電線復雜環境、機器人運動特性及巡檢任務需求,結合路徑規劃算法、智能優化算法與機器人動力學約束,構建了多目標軌跡優化模型。通過改進遺傳算法與模擬退火算法,有效…

根據窗口大小自動調整頁面縮放比例,并保持居中顯示

vue 項目 直接上代碼 圖片u1.png 是個背景圖片 圖片u2.png 是個遮罩 <template><div id"app"><div class"viewBox"><divclass"screen":style"{ transform: translate(-50%,-50%…

初學Python爬蟲

文章目錄 前言一、 爬蟲的初識1.1 什么是爬蟲1.2 爬蟲的核心1.3 爬蟲的用途1.4 爬蟲分類1.5 爬蟲帶來的風險1.6. 反爬手段1.7 爬蟲網絡請求1.8 爬蟲基本流程 二、urllib庫初識2.1 http和https協議2.2 編碼解碼的使用2.3 urllib的基本使用2.4 一個類型六個方法2.5 下載網頁數據2…

oracle 數據庫sql 語句處理過程

14.1SQL語句處理過程 在進行SQL語句處理優化前&#xff0c;需要先熟悉和了解SQL語句的處理過程。 每種類型的語句在執行時都需要如下階段&#xff1a; 第1步: 創建游標。 第2步: 分析語句。 第5步: 綁定變量。 第7步: t運行語句。 第9步: 關閉游標。 如果使用了并行功能&#x…

pm2 list查詢服務時如何通過name或者namespace進行區分

在 PM2 中&#xff0c;如果 pm2 list 顯示的所有服務名稱&#xff08;name&#xff09;相同&#xff0c;就無法直觀地區分不同的進程。這時可以通過 --namespace&#xff08;命名空間&#xff09; 或 自定義 name 來區分服務。以下是解決方案&#xff1a; 方法 1&#xff1a;啟…

[python] 函數基礎

二 函數參數 2.1 必備參數(位置參數) 含義: 傳遞和定義參數的順序及個數必須一致 格式: def func(a,b) def func_1(id,passwd):print("id ",id)print("passwd ",passwd) func_1(10086,123456) 2.2 默認參數 函數: 為函數的參數提供一個默認值,如果調…

超大規模SoC后仿真流程與優化

在超大規模SoC設計中,是否需要進行全芯片后仿真(Full-Chip Post-layout Simulation)取決于多個因素,包括設計復雜度、項目風險、資源限制以及驗證目標。以下是針對這一問題的系統性分析: 1. 全芯片后仿真的必要性 需要全芯片后仿真的場景 系統級交互驗證: 跨模塊信號交互…

深入理解 Docker 網絡原理:構建高效、靈活的容器網絡

在現代軟件開發中&#xff0c;Docker 已經成為了容器化技術的代名詞&#xff0c;廣泛應用于開發、測試和生產環境。Docker 使得開發者能夠將應用及其依賴打包成一個輕量級的容器&#xff0c;并通過 Docker 容器化技術來實現高效的部署與管理。 然而&#xff0c;在日常使用 Dock…

leetcode 242. Valid Anagram

題目描述 因為s和t僅僅包含小寫字母&#xff0c;所以可以開一個26個元素的數組用來做哈希表。不過如果是unicode字符&#xff0c;那就用編程語言自帶的哈希表。 class Solution { public:bool isAnagram(string s, string t) {int n s.size();if(s.size() ! t.size())return …

4、反應釜壓力監控系統 - /自動化與控制組件/reaction-vessel-monitor

76個工業組件庫示例匯總 反應釜壓力監控組件 這是一個用于反應釜壓力監控的自定義組件&#xff0c;專為化工廠反應釜壓力監控設計。采用蘋果工業風格界面&#xff0c;簡潔優雅&#xff0c;功能實用&#xff0c;易于使用。 功能特點 實時壓力可視化&#xff1a;直觀展示反應…

系統思考助力富維東陽

剛剛完成了長春一家汽車零配件公司關于系統思考的項目&#xff01; 在開班儀式上&#xff0c;公司總經理深刻闡述了項目的背后意義&#xff0c;強調了系統思考與公司戰略的緊密聯系。這不僅是一次培訓&#xff0c;更是一次關于“如何全方位看待問題”的深度對話。 在這個過程中…

Linux下的c/c++開發之操作Sqlite3數據庫

libsqlite3-dev 介紹&#xff08;Linux 下的 SQLite3 C/C 開發包&#xff09; libsqlite3-dev 是一個開發包&#xff0c;在 Linux 環境下為使用 SQLite3 C API 進行開發的 C/C 程序員提供頭文件&#xff08;如 sqlite3.h&#xff09;和靜態庫/動態庫的鏈接信息&#xff08;如 …

【Prompt工程—文生圖】案例大全

目錄 一、人物繪圖 二、卡通頭像 三、風景圖 四、logo設計圖 五、動物形象圖 六、室內設計圖 七、動漫風格 八、二次元圖 九、日常場景圖 十、古風神化圖 十一、游戲場景圖 十二、電影大片質感 本文主要介紹了12種不同類型的文生圖技巧&#xff0c;通過加入不同的圖像…

GMRES算法處理多個右端項的Block與PseudoBlock變體

GMRES算法處理多個右端項的Block與PseudoBlock變體 Block與PseudoBlock GMRES簡介 在處理多個右端項的線性方程組時&#xff0c;Block GMRES和PseudoBlock GMRES是兩種常用的變體算法&#xff1a; Block GMRES&#xff1a;同時處理所有右端項&#xff0c;構建一個大的Krylov…

Ubuntu環境下如何管理系統中的用戶:創建用戶、刪除用戶、修改密碼、切換用戶、用戶組管理

管理用戶的操作需要root權限&#xff0c;在執行命令時需要加sudo&#xff0c;關于sudo命令可以看這篇&#xff1a;Linux_sudo命令的使用與機制 1、添加用戶 使用命令&#xff1a; adduser 用戶名&#xff0c;主要是按提示輸入密碼和用戶信息&#xff08;可直接回車使用默認配置…