Linux
(ssh 隧道?)通過具有公共 IP 的 DIFFERENT 伺服器訪問具有私有 IP 的遠端伺服器
讓我們假設以下主機:
- 本地主機:我的筆記型電腦
- 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/
…由於我們剛剛設置的埠轉發實際上會連接到埠
8080
onprivate.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 的這篇文章。