Linux

(ssh 隧道?)通過具有公共 IP 的 DIFFERENT 伺服器訪問具有私有 IP 的遠端伺服器

  • August 14, 2013

讓我們假設以下主機:

  • 本地主機:我的筆記型電腦
  • remoteserver:具有公共 IP 的伺服器,它執行 SSH 伺服器。
  • private.remoteserver:具有私有 IP 的伺服器,只能從remoteserver訪問。

我無權sudo訪問remoteserver,因此無法使用 root 使用者進行更改。

問題是:是否可以在單個命令中從remoteserver訪問private.remoteserver上的埠?

我在沒有運氣的情況下玩過 ssh 隧道。它想為private.remoteserver創建一個 SSH 別名,如本文所述

例如,我想從 localhost 執行:

curl http://private.remoteserver:8080/

連接到 private.remoteserver 上的埠 8080。這可能嗎?

到目前為止,您還沒有向我們展示您已經嘗試過什麼,但是像這樣簡單的東西應該​​可以工作:

ssh -L 8080:private.remoteserver:8080 remoteserver

然後讓你執行:

curl http://localhost:8080/

…由於我們剛剛設置的埠轉發實際上會連接到埠8080on private.remoteserver

如果您希望能夠http://private.remoteserver:8080/從您的客戶端直接訪問,您需要 (a) 設置某種代理並 (b) 配置 curl(或其他軟體)以使用代理。您可以使用以下選項設置SOCKS5代理:ssh``-D

ssh -D 1080 remoteserver

然後你可以:

curl --socks5-hostname http://private.remoteserver:8080/

大多數網路瀏覽器(Firefox、Chrome)也可以配置為使用SOCKS5代理進行操作。如果您搜尋“ssh 動態轉發”,您會發現很多很好的文件,包括來自 Ubuntu 的這篇文章

引用自:https://serverfault.com/questions/530787