我遇到以下情況:有些主機只能透過 ssh 隧道存取。可以說它的
我可以建立 SSH 隧道並將連接所需的 443 連接埠綁定到本地連接埠:
ssh -L 1443:example.com:443 -L 2443:other.com:443 -A -l username myproxy.com
到目前為止,這工作得很好 - 當我打電話時https://localhost:1443
,我可以打開 example.com,如果我打電話https://localhost:2443
,我可以打電話 other.com
問題:有些應用程式沒有意識到這一點,但仍然嘗試透過常規主機名稱和連接埠進行連接。
將以下行添加到我的hosts
文件中,我可以更接近最終解決方案:
127.0.0.1 example.com
127.0.0.1 other.com
這使我能夠在瀏覽器中調用https://example.com:1443
和https://other.com:2443
- 但端口仍然是一個問題。我需要將兩個網域映射到我的本地端口,443
以使其適用於其他應用程式。
我想我需要有一個本地代理伺服器偵聽連接埠443
並根據主機名稱將流量轉送到 或1443
,2443
但這就是我迷失的地方。
我該怎麼做才能使我的電腦上的所有應用程式僅使用主機名稱/端口,但讓流量通過我的 SSH 隧道?
答案1
使用ssh -D
。這將在指定連接埠(通常是1080或9050)上建立SOCKS 5代理伺服器,您可以在瀏覽器中配置並存取一切透過 SSH 隧道。
這與 OpenSSH、PuTTY (plink)、Bitvise Tunnelier 的工作原理相同;並且不依賴任何作業系統級功能。
例如,透過ssh -D 9050
運行,您可以像這樣配置 Firefox:
(Chrome 可能需要命令列選項反而。