通過SSH重定向端口

有時候我們需要 通過套接字傳輸數據 在不同機器之間進行連接,例如Telnet連接,FTP文件下載,SQL查詢或任何其他類型的傳輸。

該數據通過網絡原始傳輸,因此 不安全的,這意味著它們可能會被起點和終點之間路徑上的任何節點(即, 羅巴多斯.

我們無法阻止捕獲這些數據,但是我們可以阻止的是第三方會對其進行解釋和理解,從而對通信進行加密。

SSH 是允許我們做的工具 安全連接 在機器之間。 它最常見的用途是遠程連接到命令解釋器。

但是,它提供了其他可能性,例如創建 加密隧道 在不同的機器之間。
假設我們要從host1 telnet到host2:

host1$ telnet host2

這種溝通是完全開放的,可以 被攔截。 為了保護它,我們將主機5000上任意選擇的端口(例如1)重定向到主機23上的端口2(telnet)。

這樣,我們將獲得所有發送到host5000的端口1的數據,以加密方式通過ssh通過host22的端口2打開的隧道傳輸,然後重定向到host23的端口2,從而到達其最終目的地。

為此,我們需要知道host2的用戶名和密碼。

要打開隧道,我們寫:

host1$ ssh -R 5000:localhost:23 usuariohost2@host2

好吧:

host1$ ssh -L 5000:host2:23 usuariohost2@host2

這兩個選項是等效的。 要建立telnet連接,我們不再引用host2,而是引用host1上的所選端口:

host1$ telnet localhost 5000

這樣,無論是telnet還是其他方式,我們都能確保任何通信的安全。 多做一些調查,由於 SSH 也可以將這些重定向轉移到第三台計算機,這將使我們能夠通過一個入口點就可以安全地從整個LAN訪問另一個LAN。


15條評論,留下您的評論

發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。

  1.   納米 他說:

    該理論看起來非常有趣,但是如果我們看到一個實際案例,那就更是如此。

    事實是,即使我很矮,我還是喜歡這篇文章。

    1.    原始的 他說:

      也許看一下您受到啟發的維基 https://wiki.archlinux.org/index.php/Secure_Shell#Forwarding_other_ports
      和相同,但autossh部分 https://wiki.archlinux.org/index.php/Secure_Shell#Autossh_-_automatically_restarts_SSH_sessions_and_tunnels
      實際上,您可以通過ssh發送的任何內容,無論是流媒體還是與主機的連接。 等等出於x原因,您想對其進行加密。
      和securecrt規則

  2.   特斯拉 他說:

    有時我會在非常基本的級別上使用SSH。 默認端口是22,對吧?

    因此,如果我理解正確,我的電腦是主機1,而我想連接的主機是host2,那麼此隧道會在端口5000和端口23之間建立連接,然後在端口22上連接?

    為什麼要切換端口的原因? 可以使用端口22創建隧道嗎?

    非常有趣的文章。 像納米一樣,我還想要更多!

    1.    Getafix 他說:

      SSH確實確實默認使用端口22(儘管可以更改)。 該端口是兩個主機之間實際通信所使用的端口。 您必須確保它是打開的並且沒有防火牆將其切斷。 但是對於用戶而言,它是完全透明的。 您可以忘記它。 在示例中,重定向在端口5000和23之間。這兩個是您唯一需要擔心的。 用戶將看到他發送到其主機的端口5000的所有內容都顯示在目標主機的23處。
      顯然,每個用戶都可以重定向他認為合適的端口。

      感謝您的意見。 這是我的第一篇文章,您的意見將有助於使下一篇更好。

  3.   埃利奧時間3000 他說:

    VPS也可以做到嗎?

  4.   獵人 他說:

    好的,這是我的情況,PC1可以訪問服務器,但是PC2不能,都通過ssh連接,我想在PC2中訪問,但是我應該重定向PC1的哪個端口? 如果實際上我要從PC2到達服務器端口,並且數據包以PC1作為其源IP。 我懂嗎

    1.    Getafix 他說:

      你讓自己理解。 在這種情況下,您需要PC1將PC2的端口重定向到服務器的端口22:

      PC2 $ ssh -L 5000:服務器:22個用戶PC1 @ PC1

      並從另一個終端保持此連接打開:

      PC2 $ ssh userServer @本地主機-p 5000

      你已經在裡面了

      1.    獵人 他說:

        最後一個功能解決方案! 謝謝Getafix,您給了我無限的可能性!

        1.    Getafix 他說:

          我很高興!

  5.   拉夫 他說:

    Excelente artículo. Bienvenido a DesdeLinux ????

    如果我們有22個被阻止該怎麼辦? 大聲笑..

    1.    Getafix 他說:

      謝謝埃拉夫。
      如果您的端口22受阻,mmmm,我們將不得不尋找一種替代方法來破解XD防火牆

    2.    埃利奧時間3000 他說:

      最糟糕的是(假設的):VPS提供者阻止了它。

  6.   年增長率 他說:

    幾個小時前我剛剛進行了考試,並且對此有疑問😛

  7.   馬里奧 他說:

    我不會這麼說:
    host1 $ ssh -R 5000:本地主機:23 userhost2 @ host2
    它等效於另一命令行... -L。
    由於-R表示打開新連接的端口在遠程側,即ssh服務器側; -L在本地端打開一個端口,而在客戶端端打開一個端口以接收新連接。

    該行的翻譯:
    host1 $ ssh -R 5000:本地主機:23 userhost2 @ host2
    就像這樣:在host1上,用我的用戶userhost22連接到host2的ssh服務器(端口2),並將在host5000的遠程端口2上生成的連接轉發到host23(我的本地主機)上的端口1

    如果沒有,請糾正我! 😉

    -

    另一方面...如果服務器阻止了端口22的連接進入,即我們無法遠程連接到ssh服務器; 可以做的是; 從服務器(遠程host2系統的防火牆後面的朋友sysadmin)執行以下命令行:

    host2 $ nohup ssh -fN -R 6000:本地主機:22 userhost1 @ host1

    -f轉到背景
    -N在遙控器上不執行任何命令
    nohup防止註銷時中斷命令的執行

    host1 $ ssh userhost2 @本地主機-p 6000

    通過這種方式,我們從host1在端口1上生成了到localhost(同一host6000)的連接,該連接會將連接轉發到遠程系統host22的端口2,我們將在其中以用戶host2登錄。

    這將允許(我沒有對其進行測試,但聽起來確實可行)在內部有一點幫助的情況下登錄到被firewal阻止的ssh服務器! 😀

    我從《 The Geek Stuff》雜誌的解釋中讀到了後者
    http://www.thegeekstuff.com/2013/11/reverse-ssh-tunnel/

    我真的很喜歡你的出版物; 我經常閱讀它們!
    問候。

    1.    Getafix 他說:

      你是對的。 文章中有錯誤。 重定向不等效。 命令host1 $ ssh -R 5000:localhost:23 userhost2 @ host2執行反向重定向,即,將遠程端口5000重定向到23本地,這與-L命令相反。
      謝謝你的糾正。