SSH端口轉發

?   SSH 會自動加密和解密所有SSH 客戶端與服務端之間的網絡數據。但是,SSH 還能夠將其他TCP 端口的網絡數據通過SSH 鏈接來轉發,并且自動提供了相應的加密及解密服務。這一過程也被叫做“隧道”(tunneling),這是因為SSH 為其他TCP 鏈接提供了一個安全的通道來進行傳輸而得名。例如,Telnet,SMTP,LDAP 這些TCP 應用均能夠從中得益,避免了用戶名,密碼以及隱私信息的明文傳輸。而與此同時,如果工作環境中的防火墻限制了一些網絡端口的使用,但是允許SSH 的連接,也能夠通過將TCP 端口轉發來使用SSH 進行通訊。
   SSH 端口轉發能夠提供兩大功能:
  (1)加密SSH Client 端至SSH Server 端之間的通訊數據
  (2)突破防火墻的限制完成一些之前無法建立的TCP 連接
    例如這樣一種應用場景:B、C位于企業內部的同一個局域網,A位于互聯網上的某個網絡,企業內部設置了防火墻,A想通過互聯網訪問C機器上的telnet服務,由于telenet服務不安全,所以企業的防火墻策略中一般會禁止外部用戶訪問內部機器上的telnet,并且企業一般不允許開VPN,開VPN相當于直接連到企業內部。由于ssh服務是比較安全的,所以企業的防火墻策略中一般會允許外部用戶訪問內部某個運行著ssh服務的主機,所以A要訪問C上的telenet服務可以通過ssh端口轉發的方式,假設B就是一個ssh服務器,即A可以通過訪問B上的ssh服務進而去訪問C上的telenet服務,此時B是堡壘機,相當于一個跳板,A借助這個跳板訪問企業內部C的telnet服務,此時A和B之間是ssh連接,B和C之間。下面模擬一下這種場景:
   A:centos7(192.168.25.107)
   B:rhel5(192.168.25.100)
   C:centos6(192.168.25.106)

這里寫圖片描述

查看C上是否安裝了telnet服務

這里寫圖片描述

查看telnet服務是否已打開(由圖中可看出telnet服務已設為開機啟動)

這里寫圖片描述

telnet服務的23端口已打開

這里寫圖片描述

先禁用一下C的防火墻

這里寫圖片描述

拒絕來自于A發起的請求,模擬防火墻對telnet連接的限制

這里寫圖片描述

A上確認一下沒有其他服務正在使用9527端口

這里寫圖片描述

   因為之前做了基于key驗證的實驗,所以沒有輸密碼直接就連上了,并且跳轉到了遠程shell即B上,即此時A與B已經建立起ssh連接,相當于為不安全的telnet連接搭建了一個安全的隧道。此時想在A上繼續執行命令,不能exit退出遠程shell,因為此時隧道已經建起來了,若exit,隧道就斷開了,所以要么再單獨開一個終端,要么加-Nf選項。

這里寫圖片描述

-N不打開遠程shell,不跳到遠程主機
-f直接在本機執行命令,不用再打開新終端,即后臺執行
 192.168.25.106 目標主機C的IP
 23目標主機C上的服務端口,即telnet服務
 192.168.25.100跳板機B的IP(應確保跳板機上有ssh服務)

、這里寫圖片描述

    如圖第三個連接,是B的22端口(即B的ssh服務)連接到A的32926端口,即A和B的ssh連接已建立,即隧道已經搭好了,就等著發起telenet流量了,此時還沒有telenet連接。

這里寫圖片描述

本地的9527端口已處于監聽狀態

這里寫圖片描述

C上還沒有到23端口的連接,即還沒有到telenet服務的連接

這里寫圖片描述

這里寫圖片描述

   執行完ssh -L命令后,就在本機(即A)打開了一個隨機端口32926,用作ssh客戶端,并且建立起與ssh服務器(即B)的連接,并且打開本機(即A)的9527端口,讓其充當telenet服務器,去監聽本機的telnet請求
   執行完telenet 127.0.0.1 9527命令后,就在本機(即A)打開了隨機端口38528,充當telenet客戶端,由它發起telnet請求,本機的9527端口(即telnet服務端)監聽到請求后,就與本機的38528端口(即telenet客戶端)建立起telnet連接
   本機的9527端口(即telnet服務端)接收到telnet數據包后,就將其轉交給本機32926端口(ssh客戶端),由它對telnet數據包進行加密封裝,封裝成ssh包,并由由它轉發給ssh服務器(即B)的22端口
   圖中第一個連接是38528端口(即telenet客戶端)向9527端口(即telnet服務端)發起的連接,第三個連接是9527端口(即telnet服務端)向38528端口(即telenet客戶端)發起的連接,因為兩個端口位于同一臺主機,所以都在這里顯示了出來。

這里寫圖片描述

    ssh服務器(即B)收到ssh客戶端(即A)發來的ssh包后,將其解密解封裝,得到telnet數據包,然后在本機打開53580隨機端口用作telnet客戶端,并將telnet數據包轉發給telnet服務器(即C)的23端口
    圖中第三條連接是ssh客戶端(即A,端口為32926)到B(即ssh服務器)的連接;
    第一條是B(即telnet客戶端,端口為53580)到telnet服務器(即C,端口為23端口)的連接。

這里寫圖片描述

    此時C上已建立起telnet連接,是由telnet客戶端(即B,端口為53580)發起的

這里寫圖片描述

   如圖可看出,A已經成功連上了C

這里寫圖片描述

   exit退出與遠程shell的連接

這里寫圖片描述

   退出后,A上telnet服務器(即本機的9527端口)與telenet客戶端(本機的38528端口)之間的telnet連接斷開,
   B(即telnet客戶端,端口為53580)到C(即telnet服務器,端口為23端口)的telnet連接斷開
   此時只剩下ssh客戶端(即A)與ssh服務器(即B)的ssh連接,即隧道仍存在,本機的9527端口仍處于監聽狀態

這里寫圖片描述

   用ps aux可看到后臺執行的ssh服務

這里寫圖片描述

   關閉ssh進程

這里寫圖片描述

   關了之后本機的9527端口也關了

這里寫圖片描述

  此時A再次發起telenet連接已經連不上了

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/86872

(5)
以夢為馬以夢為馬
上一篇 2017-09-10 22:51
下一篇 2017-09-10 23:40

相關推薦

  • Linux shell腳本編程練習題

    《書籍上面的練習題》 問題:誰在霸占磁盤資源?     如果您負責的Linux服務器上有許多用戶,則經常需要解決的一個問題就是誰在使用所有磁盤空間。這是個老掉牙的問題有時比其他問題更難以弄清。     不幸的是,雖然跟蹤用戶磁盤空間使用情況非常重要,但卻沒有一個Linux命令可以提供此信息。因此需要…

    Linux干貨 2016-06-09
  • N25期—第一周作業

    計算機的組成及其功能 Linux發行版介紹 Linux哲學思想 Linux系統幾個常用命令介紹 Linux系統獲取幫助信息介紹 Linux基礎目錄介紹 計算機組成         計算機分為中央處理器,主存儲器,輔助存儲器,輸入輸出設備,總線等5個部分    &nbsp…

    Linux干貨 2016-12-05
  • PS進程命令常用選項參數詳解

    PS命令是什么 ps命令能夠給出當前系統中進程的快照。它能捕獲系統在某一時間的進程狀態。如果想要不斷更新查看這個狀態,可以配合watch命令或使用top命令。ps命令支持三種使用的語法格式 UNIX 風格:選項可以組合在一起,并且選項前必須有”-“連字符。 BSD 風格 :選項可以組合在一起,但是選項前不能有”-&#822…

    2017-07-09
  • 軟件包管理

    軟件運行與編譯過程:程序源代碼——預處理——-編譯——-匯編——-鏈接 靜態編譯:.a 動態編譯:.so 二進制程序的組成:二進制文件、庫文件、配置文件、幫助文件。 包的命名:1、源代碼:name -VERSION.tar.gz或bz2或xz   &nb…

    Linux干貨 2017-04-23
  • 非常不錯的編程技術教程

    下面是一些非常不錯的編程教程,當然,全是英文版的。不過因為是新手教程,所以非常容易閱讀,可以在學習技術的同時加強一下自己的英語閱讀能力。 如果你是一個新手,建議你把本頁設為你的收藏夾。C Introduction to C Programming C Optimization Tutorial Compiling C and C…

    Linux干貨 2016-05-10
  • Linux文件管理及常用方法

    Linux文件管理及常用方法 一切皆文件,管理系統即用正確的方法管理相應的文件。 Linux系統中文件管理所涉及到的問題 ls -l boot.log   -rw-r–r–. 1 root   root     13…

    Linux干貨 2016-11-06

評論列表(1條)

  • h
    h 2017-09-13 11:18

    內容不錯,注意排版

欧美性久久久久