深入 SSH:解鎖本地轉發、遠程轉發和動態轉發的潛力

文章目錄

  • 前言
  • 一、解鎖內部服務:SSH 本地轉發
    • 1.1 什么是 SSH 本地轉發
    • 1.2 本地轉發應用場景
  • 二、打開外部訪問大門:SSH 遠程轉發
    • 2.1 什么是 SSH 遠程轉發
    • 2.2 遠程轉發應用場景
  • 三、動態轉發:SSH 讓你擁有自己的 VPN
    • 3.1 什么是 SSH 動態轉發
    • 3.2 動態轉發應用場景
  • 四、小結
  • 推薦閱讀

前言

SSH(Secure Shell)不僅是一個用于安全遠程登錄的協議,還支持多種類型的端口轉發功能,包括本地轉發、遠程轉發和動態轉發。這些功能使我們能夠靈活地通過 SSH 隧道在不同網絡環境中安全地傳輸數據。本文將詳細介紹這三種轉發方式及其應用場景。

一、解鎖內部服務:SSH 本地轉發

1.1 什么是 SSH 本地轉發

SSH 本地轉發(SSH Local Port Forwarding)是一種通過 SSH 隧道將本地計算機的端口轉發到遠程服務器的特定端口的方法。其主要目的是在本地訪問遠程服務器上的服務,確保通信過程中的數據安全性。

在這里插入圖片描述

  1. 用戶發起 SSH 連接命令:用戶在本地主機上使用 SSH 命令發起連接,指定本地端口和遠程主機及其端口。例如:

    # 這條命令表示將本地主機的某個端口(本地端口)映射到遠程主機的某個端口(遠程端口),通過 SSH 服務器進行連接。
    ssh -L 本地端口:遠程主機:遠程端口 用戶名@SSH服務器
    
  2. 建立 SSH 連接:本地主機與 SSH 服務器建立 SSH 連接,確保通信的安全性。

  3. 用戶訪問本地端口:用戶通過訪問本地主機的 localhost:本地端口,實際訪問到遠程主機上的服務。所有訪問 localhost:本地端口 的請求都會通過 SSH 隧道轉發到遠程主機的遠程端口。

  4. SSH 隧道轉發請求:SSH 服務器接收到來自本地主機的請求,通過 SSH 隧道將這些請求轉發到遠程主機的遠程端口。

  5. 遠程主機處理請求:遠程主機上的服務接收并處理請求,然后將響應結果返回給 SSH 服務器,SSH 服務器再通過 SSH 隧道將結果返回給本地主機,最終用戶在本地主機上獲取到結果。

1.2 本地轉發應用場景

假設有一個數據庫服務器 dbserver.com,它的端口 3306 僅對內部網絡開放。你可以通過中轉服務器 sshserver.com 訪問該數據庫。

ssh -L 3306:dbserver.com:3306 user@sshserver.com

執行上述命令后,您可以通過訪問 localhost:3306 來連接到 dbserver.com 上的 MySQL 數據庫。

在這里插入圖片描述

  1. 在本地計算機上運行 ssh -L 3306:dbserver.com:3306 user@sshserver.com
  2. 本地計算機在 localhost:3306 上監聽。
  3. 當本地應用程序連接到 localhost:3306 時,SSH 客戶端通過 SSH 隧道將請求轉發到 sshserver.com。
  4. sshserver.com 將請求轉發到 dbserver.com:3306。
  5. 數據庫服務器返回的響應通過相同的路徑返回到本地計算機。

二、打開外部訪問大門:SSH 遠程轉發

2.1 什么是 SSH 遠程轉發

SSH 遠程轉發(SSH Remote Port Forwarding)是一種通過SSH隧道在遠程服務器和本地計算機之間安全地轉發網絡流量的技術。它允許將遠程服務器上的某個端口的流量通過SSH隧道傳輸到本地計算機上的指定端口。這種方式通常用于在安全的 SSH 連接上訪問遠程服務器內網中的資源,而無需直接暴露這些資源。

在這里插入圖片描述

  1. 用戶 A 發起連接:用戶A在本地主機上使用SSH命令發起遠程轉發連接。示例命令為:

    #   該命令中,遠程端口是SSH服務器上的端口,本地主機是用戶A的本地計算機,本地端口是本地主機上的端口,用戶名是SSH服務器上的用戶名,SSH服務器是遠程SSH服務器的地址。
    ssh -R 遠程端口:本地主機:本地端口 用戶名@SSH服務器
    
  2. 建立 SSH 連接:本地主機與 SSH 服務器之間建立 SSH 連接。這一步驟確保所有數據都通過安全的 SSH 隧道傳輸。

  3. 用戶 B 訪問服務:遠程主機上的用戶 B 試圖通過 SSH 服務器訪問本地主機上的服務。

  4. 請求轉發:SSH 服務器接收到用戶 B 的請求后,通過已建立的 SSH 隧道將請求轉發到用戶 A 的本地主機上的端口。

  5. 響應返回:本地主機將響應通過 SSH 隧道發送回 SSH 服務器,SSH 服務器再將響應轉發回遠程主機。

2.2 遠程轉發應用場景

假設你在本地計算機上運行了一個 Web 服務器(例如:localhost:80),希望通過中轉服務器 sshserver.com 讓遠程用戶訪問該 Web 服務器。

ssh -R 8080:localhost:80 user@sshserver.com

執行上述命令后,遠程用戶可以通過訪問 sshserver.com:8080 來連接到本地計算機上的 Web 服務器。

在這里插入圖片描述

  1. 在本地計算機上運行 ssh -R 8080:localhost:80 user@sshserver.com
  2. SSH 服務器在 sshserver.com:8080 上監聽。
  3. 當遠程用戶連接到 sshserver.com:8080 時,SSH 服務器通過 SSH 隧道將請求轉發到本地計算機上的 localhost:80。
  4. 本地計算機返回的響應通過相同的路徑返回到遠程用戶。

三、動態轉發:SSH 讓你擁有自己的 VPN

3.1 什么是 SSH 動態轉發

SSH 動態轉發(SSH Dynamic Port Forwarding)是一種通過 SSH 隧道實現的代理功能,它允許在本地計算機上創建一個 SOCKS 代理服務器,從而使得所有通過這個代理的流量都通過 SSH 隧道加密并轉發到遠程服務器。與本地轉發和遠程轉發不同,動態轉發不需要預先指定目標主機和端口,而是可以動態地決定目的地,這使其更加靈活。

在這里插入圖片描述

  1. 用戶發起連接:用戶在本地主機上使用 SSH 命令發起動態轉發連接。示例命令為:

    # 該命令中,本地代理端口是本地計算機上打開的SOCKS代理端口,用戶名是SSH服務器上的用戶名,SSH服務器是遠程SSH服務器的地址。
    ssh -D 本地代理端口 用戶名@SSH服務器
    
  2. 建立 SSH 連接:本地主機與 SSH 服務器之間建立 SSH 連接。這一步確保所有數據都通過安全的 SSH 隧道傳輸。

  3. 設置本地 SOCKS 代理:本地計算機在指定端口(例如 8080)上啟動一個 SOCKS 代理。任何發送到該端口的流量都會通過 SSH 隧道轉發到遠程服務器。

  4. 用戶配置應用程序:用戶配置需要通過代理訪問網絡的應用程序(如瀏覽器),使其使用本地 SOCKS 代理端口(例如 8080)。

  5. 應用程序發出請求:用戶在應用程序中訪問某個遠程服務器(例如訪問某個網站)。應用程序的請求首先發送到本地 SOCKS 代理端口。

  6. 請求轉發:本地計算機捕獲通過 SOCKS 代理端口的請求,通過已建立的 SSH 隧道將請求加密并轉發到 SSH 服務器。

  7. SSH 服務器處理請求:SSH 服務器接收到請求后,根據請求中的目標地址和端口訪問遠程服務器。

  8. 遠程服務器處理請求并返回響應:遠程服務器接收請求后進行處理,生成響應數據,并將其返回給 SSH 服務器。SSH 服務器將響應數據通過 SSH 隧道加密并發送回本地主機。

3.2 動態轉發應用場景

假設你希望通過中轉服務器 sshserver.com 訪問多個遠程網站(例如:example.com)。可以在本地設置一個 SOCKS 代理。

ssh -D 1080 user@sshserver.com

執行上述命令后,可以配置瀏覽器或其他應用程序使用 localhost:1080 作為 SOCKS 代理,通過中轉服務器訪問任意遠程網站。

在這里插入圖片描述

  1. 在本地計算機上運行 ssh -D 1080 user@sshserver.com。
  2. 本地計算機在 localhost:1080 上監聽。
  3. 應用程序通過 SOCKS 代理連接到 localhost:1080。
  4. SSH 客戶端根據請求的目標地址,通過 SSH 隧道將請求轉發到 sshserver.com。
  5. sshserver.com 將請求轉發到目標服務器(例如:example.com)。
  6. 目標服務器返回的響應通過相同的路徑返回到本地計算機。

四、小結

SSH 的本地轉發、遠程轉發和動態轉發功能為用戶提供了強大的網絡訪問和安全保障。這些功能不僅提升了網絡操作的靈活性,還增強了數據傳輸的安全性。掌握這些 SSH 技術,可以在日常工作中更加高效和安全地訪問各種網絡資源。

推薦閱讀

  1. 深入探究 Spring Boot Starter:從概念到實踐
  2. 深入理解 Java 中的 volatile 關鍵字
  3. OAuth 2.0:現代應用程序的授權標準
  4. Spring 三級緩存
  5. 深入了解 MyBatis 插件:定制化你的持久層框架

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

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

相關文章

mysqldump全備份之后,如何只恢復一個庫或者一個表

在實際工作中,一個MySQL實例中可能有多個database。而我們備份時,通常采用完全備份,將所有database都備份到一個文件中。 但是,偶爾會遇到只恢復一個database或者一個表的情況。怎么解決呢? 一、利用全備恢復一個庫(database)的數據 案例:朋友在群里問, MySQL全庫備份…

memory動態內存管理學習之weak_ptr

此頭文件是動態內存管理庫的一部分。std::weak_ptr 是一種智能指針,它持有對被 std::shared_ptr 管理的對象的非擁有性(“弱”)引用。在訪問所引用的對象前必須先轉換為 std::shared_ptr。std::weak_ptr 用來表達臨時所有權的概念&#xff1a…

three.js實現雪花場景效果

點擊獲取雪花圖片素材 提取碼:lywa // 雪花效果 import * as THREE from "three" export function getsnowEffect(th) {console.log(th, th) // this 場景var that th// 創建一個BufferGeometry對象,用于存儲頂點數據 const geometry new THREE.Buffe…

Vim神兵:精通自定義補全規則

標題:Vim神兵:精通自定義補全規則 摘要 Vim作為Linux上最強大的文本編輯器之一,其補全功能可以極大提高編碼效率。本文將詳細探討如何在Vim中自定義補全規則,包括基本的補全設置、使用Vim腳本擴展補全功能,以及如何利…

大模型微調實戰之基于星火大模型的群聊對話分角色要素提取挑戰賽:Task01:跑通Baseline

目錄 0 背景1 環境配置1.1 下載包1.2 配置密鑰1.3 測試模型 2 解決問題2.1 獲取數據2.2 設計Prompt2.2 設計處理函數2.3 開始提取 附全流程代碼 0 背景 Datawhale AI夏令營第二期開始啦,去年有幸參與過第一期,收獲很多,這次也立馬參與了第二…

VMware ESXi 技術

目錄 一、VMware ESXi安裝 1. 在VMware WorkStation中創建一臺虛擬機 2. 進入VMware ESXi控制臺 3. 配置VMware ESXi網絡 二、使用Web網頁端登錄管理ESXi 1. 分配許可證密鑰(選做) 2. 管理ESXi 三、VMware ESXi控制臺 1. 創建虛擬機 2. 定制虛擬…

Webpack: 開發 PWA、Node、Electron 應用

概述 毋庸置疑,對前端開發者而言,當下正是一個日升月恒的美好時代!在久遠的過去,Web 頁面的開發技術鏈條非常原始而粗糙,那時候的 JavaScript 更多用來點綴 Web 頁面交互而不是用來構建一個完整的應用。直到 2009年5月…

LINUX操作系統:Mx Linux,用虛擬機VMware Workstation安裝體驗

需求說明: 操作系統目前流行有Windows、Linux、Unix等,中國人應該要知道國有操作系統,也要支持國產操作系統,為了更好支持國產操作系統,我們也要知己知彼,那么今天就來體驗一把操作系統Mx_Linux_23.2的安裝…

分享一個下載windows系統鏡像包的網站

下載各種操作系統(比如Windows、Linux、MacOS等)比較快的鏡像站點,我嘗試過這個不錯,提供了BT連接,可以用迅雷軟件下載,速度很快的! 入口地址:NEXT, ITELLYOU 1)打開網站…

[XYCTF新生賽2024] pwn

用了一周來復現crypto部分(不能算是復現,拿著 糖醋小雞塊的WP一點點學了下)。 兩天時間復現PWN部分。相對來說PWN比密碼這塊要簡單,不過ARM,MIPS懶得學了,跳過。 malloc_flag 題目先打開flag將建0x100的塊,然后把flag讀入再fre…

[深度學習] Transformer

Transformer是一種深度學習模型,最早由Vaswani等人在2017年的論文《Attention is All You Need》中提出。它最初用于自然語言處理(NLP)任務,但其架構的靈活性使其在許多其他領域也表現出色,如計算機視覺、時間序列分析…

MySQL高級-SQL優化- limit優化(覆蓋索引加子查詢)

文章目錄 0、limit 優化0.1、從表 tb_sku 中按照 id 列進行排序,然后跳過前 9000000 條記錄0.2、通過子查詢獲取按照 id 排序后的第 9000000 條開始的 10 條記錄的 id 值,然后在原表中根據這些 id 值獲取對應的完整記錄 1、上傳5個sql文件到 /root2、查看…

libctk shared library的設計及編碼實踐記錄

一、引言 1.1 <libctk>的由來 1.2 <libctk>的設計理論依據 1.3 <libctk>的設計理念 二、<libctk>的依賴庫 三、<libctk>的目錄說明 四、<libctk>的功能模塊及使用實例說明 4.1 日志模塊 4.2 mysql client模塊 4.3 ftp client模塊 4…

鴻蒙開發設備管理:【@ohos.geolocation (位置服務)】

位置服務 說明&#xff1a; 本模塊首批接口從API version 7開始支持。后續版本的新增接口&#xff0c;采用上角標單獨標記接口的起始版本。 導入模塊 import geolocation from ohos.geolocation;geolocation.on(‘locationChange’) on(type: ‘locationChange’, request: L…

安卓開發自定義時間日期顯示組件

安卓開發自定義時間日期顯示組件 問題背景 實現時間和日期顯示&#xff0c;左對齊和對齊兩種效果&#xff0c;如下圖所示&#xff1a; 問題分析 自定義view實現一般思路&#xff1a; &#xff08;1&#xff09;自定義一個View &#xff08;2&#xff09;編寫values/attrs.…

poi-tl 生成 word 文件(插入文字、圖片、表格、圖表)

文章說明 本篇文章主要通過代碼案例的方式&#xff0c;展示 poi-tl 生成 docx 文件的一些常用操作&#xff0c;主要涵蓋以下內容 &#xff1a; 插入文本字符&#xff08;含樣式、超鏈接&#xff09;插入圖片插入表格引入標簽&#xff08;通過可選文字的方式&#xff0c;這種方…

俄羅斯防空系統

俄羅斯的S系列防空系統是一系列先進的地對空導彈系統&#xff0c;旨在防御各類空中威脅&#xff0c;包括飛機、無人機、巡航導彈和彈道導彈。以下是幾種主要的S系列防空系統&#xff1a; 1. **S-300系統**&#xff1a; - **S-300P**&#xff1a;最早期的版本&#xff0c;用…

翻譯造句練習

翻譯練習 翻譯 1&#xff1a;經常做運動會提高人的自信 翻譯 2&#xff1a;教學的質量對學生成績有很大的影響。 翻譯 3&#xff1a;家長和老師應該努力去減少小孩看電視的時間。 翻譯 4&#xff1a;經濟的下滑&#xff08;economic slowdown&#xff09;導致失業率的上升 翻譯…

大模型和數據庫最新結合進展

寫在前面 本文主要內容是上次接受 infoQ 訪談&#xff0c;百度智能云朱潔老師介紹了大模型和 AI 結合相關話題&#xff0c;這次整體再刷新下&#xff0c;給到對這個領域感興趣的同學。 當前&#xff0c;百度智能云云數據庫特惠專場開始&#xff01;熱銷規格新用戶免費使用&am…

Android中ViewModel+LiveData+DataBinding的配合使用(kotlin)

Android 中 ViewModel、LiveData 和 Data Binding 的配合使用&#xff08;Kotlin&#xff09; 摘要 本文將介紹如何在 Android 開發中結合使用 ViewModel、LiveData 和 Data Binding 進行數據綁定和狀態更新。我們將詳細探討這三者之間的關系&#xff0c;并展示如何在 Kotlin…