Linux中ssh遠程登錄原理與配置

SSH連接的五個階段

1. 版本協商階段(Protocol Version Negotiation)
  • 目的:協商使用SSH-1或SSH-2協議(現代系統默認SSH-2)。

  • 流程

    請添加圖片描述

  • 關鍵點:若版本不兼容(如客戶端只支持SSH-1,服務端僅支持SSH-2),連接立即終止。


2. 算法協商階段(Algorithm Negotiation)
  • 目的:協商加密算法、MAC(消息認證碼)、密鑰交換算法等。

  • 流程

    在這里插入圖片描述

  • 算法類型

    • 密鑰交換算法curve25519-sha256, ecdh-sha2-nistp256
    • 加密算法aes256-gcm@openssh.com, chacha20-poly1305
    • MAC算法hmac-sha2-256
    • 主機密鑰算法ssh-ed25519, ecdsa-sha2-nistp256

3. 認證階段(Authentication)

客戶端需通過服務端驗證,常見方式:密碼認證公鑰認證

🔐 密碼認證原理

在這里插入圖片描述

  • 風險:易受暴力破解攻擊,建議啟用失敗次數限制(如MaxAuthTries 3)。
🔑 密鑰認證原理

在這里插入圖片描述

  • 優勢:抵御中間人攻擊(依賴主機密鑰)、無需傳輸密碼。
  • 關鍵文件
    • 客戶端:~/.ssh/id_ed25519(私鑰), ~/.ssh/id_ed25519.pub(公鑰)
    • 服務端:~/.ssh/authorized_keys(存儲已授權的公鑰)

4. 會話請求階段(Session Request)
  • 目的:建立交互式Shell、SFTP、端口轉發等通道。

  • 流程

    在這里插入圖片描述

  • 關鍵請求類型

    • shell:啟動交互式終端
    • subsystem sftp:啟動SFTP服務
    • tcpip-forward:請求端口轉發

5. 數據交互階段(Data Exchange)
  • 安全通道特性

    • 所有數據通過對稱加密傳輸(如AES-256)
    • 每個數據包附加MAC校驗碼防篡改
    • 支持壓縮(可選)
  • 數據傳輸流程

    在這里插入圖片描述


認證方式對比總結

特性密碼認證密鑰認證
安全性較低(易受暴力破解)高(非對稱加密+簽名)
便捷性需手動輸入密碼免密碼(可配合ssh-agent)
防中間人攻擊依賴主機密鑰驗證依賴主機密鑰驗證
配置文件/etc/ssh/sshd_config~/.ssh/authorized_keys
推薦場景臨時訪問自動化腳本/常連接

SSH完整使用指南

一、SSH服務端部署
# 安裝SSH服務
yum -y install openssh openssh-clients# 啟動服務并設置開機自啟
systemctl restart sshd
systemctl enable sshd# 更改用戶登錄選項
vim /etc/ssh/sshd_config
# 把選項更改為yes(Centos7有些為默認開啟)
#PermitRootLogin yes
二、SSH連接基礎
# 基本連接(僅命令行)
ssh username@server_ip# 帶圖形界面轉發(X11 Forwarding)
ssh -X username@server_ip
三、密鑰認證配置流程

在這里插入圖片描述

具體命令:

# 1. 客戶端生成密鑰(默認RSA算法)
ssh-keygen  # 連續回車使用默認設置# 2. 上傳公鑰到服務器(需驗證密碼)
ssh-copy-id -i ~/.ssh/id_rsa.pub username@server_ip# 3. 驗證密鑰登錄(無需密碼)
ssh username@server_ip
四、文件傳輸操作
操作類型命令格式示例
SFTP 交互式傳輸sftp user@ipsftp root@172.25.0.183
→ 上傳文件put [本地文件] [遠程路徑]put /local/file /remote/
→ 下載文件get [遠程文件] [本地路徑]get /remote/file /local/
SCP 直接傳輸
→ 上傳文件scp [本地文件] user@ip:[遠程路徑]scp /tmp/aa root@172.25.0.183:/var
→ 下載文件scp user@ip:[遠程文件] [本地路徑]scp root@172.25.0.183:/tmp/cc /var

📌 路徑記憶口訣

  • 上傳:本地文件 → 遠程位置
  • 下載:遠程文件 → 本地位置
五、SSH協議核心流程

在這里插入圖片描述

六、安全增強配置
# 禁用密碼認證(強制密鑰登錄)
sudo sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo systemctl restart sshd# 使用更安全的Ed25519算法
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@ip
七、常見問題排查
# 查看詳細連接過程(調試模式)
ssh -vvv user@ip# 檢查公鑰權限(服務端)
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys# 驗證端口監聽
ss -tuln | grep :22

💡 最佳實踐

  1. 生產環境禁用密碼認證
  2. 使用-J參數配置跳板機訪問內網主機
  3. 定期輪換密鑰(建議每90天)
  4. 使用Fail2Ban防御暴力破解

附:SSH協議棧架構

應用層 (SCP/SFTP/SHELL)|
SSH連接協議 (通道管理)|
用戶認證協議 (密鑰/密碼)|
傳輸層協議 (加密/壓縮)|TCP/IP

使用-J參數配置跳板機訪問內網主機

  1. 定期輪換密鑰(建議每90天)
  2. 使用Fail2Ban防御暴力破解

附:SSH協議棧架構

應用層 (SCP/SFTP/SHELL)|
SSH連接協議 (通道管理)|
用戶認證協議 (密鑰/密碼)|
傳輸層協議 (加密/壓縮)|TCP/IP

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

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

相關文章

Kubernetes --存儲入門

一、Volume 的概念對于大多數的項目而言,數據文件的存儲是非常常見的需求,比如存儲用戶上傳的頭像、文件以及數據庫的數據。在 Kubernetes 中,由于應用的部署具有高度的可擴展性和編排能力(不像傳統架構部署在固定的位置&#xff…

螞蟻 KAG 框架開源:知識圖譜 + RAG 雙引擎

引言:從RAG到KAG,專業領域知識服務的技術突破 在大語言模型(LLM)應用落地過程中,檢索增強生成(RAG) 技術通過引入外部知識庫有效緩解了模型幻覺問題,但在專業領域仍面臨三大核心挑戰…

V-Ray 7.00.08 for 3ds Max 2021-2026 安裝與配置教程(含語言補丁)

本文介紹 V-Ray 7.00.08 渲染器在 3ds Max 2021-2026 各版本中的安裝與使用配置步驟,適合需要進行可視化渲染工作的設計師、建筑師及相關從業者。附帶語言補丁配置方式,幫助用戶獲得更順暢的使用體驗。 📁 一、安裝文件準備 軟件名稱&#xf…

Go-Elasticsearch Typed Client查詢請求的兩種寫法強類型 Request 與 Raw JSON

1 為什么需要兩種寫法? 在 Golang 項目中訪問 Elasticsearch,一般會遇到兩類需求:需求場景特點最佳寫法后臺服務 / 業務邏輯查詢固定、字段清晰,需要編譯期保障Request 結構體儀表盤 / 高級搜索 / 模板 DSL查詢片段由前端或腳本動…

Leaflet 綜合案例-聚類圖層控制

看過的知識不等于學會。唯有用心總結、系統記錄,并通過溫故知新反復實踐,才能真正掌握一二 作為一名摸爬滾打三年的前端開發,開源社區給了我飯碗,我也將所學的知識體系回饋給大家,助你少走彎路! OpenLayers…

React組件中的this指向問題

在 React 組件中,函數定義方式影響this指向的核心原因是箭頭函數與普通函數的作用域綁定規則不同,具體差異如下:? 1. 普通函數(function定義)需要手動bind(this)的原因? 當用function在組件內定義方法時&#xff1…

Vue 項目中的組件引用如何實現,依賴組件間的數據功能交互及示例演示

在 Vue 項目中,組件間的引用與數據交互是核心功能之一。以下是組件引用和數據交互的詳細實現方式及示例:一、組件引用方式 1. 基本組件引用 局部注冊:在父組件中按需引入子組件并注冊。 // ParentComponent.vue import ChildComponent from .…

? 使用 Flask 實現頭像文件上傳與加載功能

文章目錄&#x1f9f1; 技術棧&#x1f5c2;? 項目結構與配置&#x1f510; 用戶身份校驗邏輯&#x1f4e4; 頭像上傳接口&#xff1a;/file/avatar/upload&#x1f4e5; 加載頭像接口&#xff1a;/file/avatar/load/<filename>&#x1f9ea; 示例請求&#xff08;使用 …

去除視頻字幕 5: 使用 ProPainter, 記錄探索過程

使用 ProPainter 去除視頻上的字幕&#xff0c;效果演示&#xff08;比之前好多了。&#xff09;。 1. 項目目標 去除視頻 (bear.webm) 中的硬字幕。 2. 初始嘗試與關鍵失敗&#xff1a;IOPaint 方法: 使用 IOPaint&#xff08;一個圖像修復工具&#xff09;配合 PaddleOCR 逐…

JavaScript HTTP 請求:從老古董到新潮流

前端開發離不開跟后端打交道&#xff0c;HTTP 請求就是這座橋梁。JavaScript 提供了好幾種方式來發請求&#xff0c;從老牌的 XMLHttpRequest (XHR) 到現代的 Fetch API&#xff0c;再到各種好用的第三方庫&#xff08;像 Axios、Ky、Superagent&#xff09;。咱們一個一個聊清…

Windows10系統使用Cmake4.1.0構建工具+Visual Studio2022編譯Opencv4.11教程

安裝提示 后續安裝本Cmake和Opencv版本及以上都可以。Microsoft Visual Studio2022已默認安裝&#xff0c;沒有安裝給出教程鏈接。 一、Cmake4.1.0下載 1.官網下載&#xff1a;https://cmake.org/download/&#xff0c;找到cmake-4.1.0-rc3-windows-x86_64.zip版本 2.壓縮包…

【性能測試】Jmeter+Grafana+InfluxDB+Prometheus Windows安裝部署教程

一、工具作用與整體架構 1.1 各工具核心作用 工具作用描述關鍵特性Jmeter性能測試工具&#xff0c;模擬多用戶并發請求&#xff0c;生成測試數據支持HTTP/HTTPS、數據庫等多種協議&#xff0c;可自定義測試場景InfluxDB時序數據庫&#xff0c;專門存儲時間序列數據&#xff0…

【Kubernetes】使用Deployment進行的資源調度,資源清理,伸縮與更新管控

Kubernetes Deployment 實戰&#xff1a;從資源清理到伸縮與更新管控 一、基礎準備&#xff1a;清理閑置 ReplicaSet 在使用 Deployment 時&#xff0c;每次更新都會生成新的 ReplicaSet&#xff08;簡稱 RS&#xff09;&#xff0c;舊的 RS 會被保留但設置為 DESIRED0。這些閑…

stm32使用USB虛擬串口,因電腦缺少官方驅動而識別失敗(全系列32單片機可用)

驅動下載地址 官網地址&#xff1a;https://www.st.com/en/development-tools/stsw-stm32102.html

枚舉中間位置基礎篇

參考資料來源靈神在力扣所發的題單&#xff0c;僅供分享學習筆記和記錄&#xff0c;無商業用途。 核心思路&#xff1a; 一&#xff1a;直接直接用數據結構記錄需要的數據&#xff0c;在枚舉右&#xff0c;維護左的循環中&#xff0c;刪除當前位置的元素即可達成一樣效果 二…

企業選擇將服務器放在IDC機房托管的優勢

在服務器作為數據存儲和傳輸的核心設備的社會環境中&#xff0c;服務器的穩定性和安全性會直接影響到企業業務的連續性和用戶的滿意程度&#xff0c;隨著云計算技術和大數據的興起&#xff0c;企業對于服務器的需求也在日益增加&#xff0c;而如何高效、安全的管理服務器則是各…

自動化UI測試工具TestComplete的AI雙引擎:即時數據集 + 自愈測試

隨著敏捷開發和持續交付模式的普及&#xff0c;傳統的軟件測試方法正面臨著前所未有的挑戰。測試團隊在追求快速迭代的同時&#xff0c;往往陷入測試數據準備和測試維護的泥潭&#xff0c;嚴重制約了交付效率和質量保障能力。 TestComplete作為業界領先的自動化測試工具&#…

用KNN實現手寫數字識別:基于 OpenCV 和 scikit-learn 的實戰教學 (超級超級超級簡單)

用KNN實現手寫數字識別&#xff1a;基于 OpenCV 和 scikit-learn 的實戰教學在這篇文章中&#xff0c;我們將使用 KNN&#xff08;K-Nearest Neighbors&#xff09;算法對手寫數字進行分類識別。我們會用 OpenCV 讀取圖像并預處理數據&#xff0c;用 scikit-learn 構建并訓練模…

數據結構自學Day15 -- 非比較排序--計數排序

一、計數排序&#xff08;Counting Sort&#xff09;計數排序是一種非比較型的排序算法&#xff0c;它的核心思想是&#xff1a;利用“元素的值”來確定它在結果數組中的位置&#xff0c;通過“統計每個數出現的次數”來完成排序。二、如何實現計數排序&#xff08;核心步驟&am…

k8s的權限

來自博客&#xff1a;25-k8s集群中-RBAC用戶角色資源權限_權限 資源 角色-CSDN博客 一.RBAC概述&#xff08;基于角色的訪問控制&#xff09; 1.圖解 用戶&#xff1a; 1.user 2.serviceAccount 3.Group 用戶角色 1.Role:局部資源角色 2.clusterRole:全局資源角色額 角色綁…