使用代理ip進行連接埠轉發

使用代理ip進行連接埠轉發

我正在嘗試使用我的公共 IP 透過 ssh 遠端存取我的機器。

執行此操作的常規方法是允許在我的路由器上進行連接埠轉發,然後執行以下操作:ssh ubuntu@myPublicIp但我的 ISP 使用 CGNAT,因此我無法使用已指派的公用 IP 進行連接埠轉送。因此,我在我的 AWS 實例上使用tinyproxy,並將我的本機電腦連接到代理 IP 位址。

這意味著我透過本機電腦發出的每個請求都會透過代理 IP。現在我的公用IP已替換為代理IP。我的問題是如何在啟用了代理的本地 Linux 計算機上設置端口轉發,以便我可以使用 ssh 遠端連接到計算機,例如ssh ubuntu@myProxyIp

答案1

要存取 NAT/防火牆/其他設備後面的計算機,除了該計算機能夠與公共網路建立出站連接並透過 ssh 存取公共網路中的實例之外,您不需要任何其他東西。

NAT 後面的電腦上的設定是為了確保它在啟用反向連接埠轉送的情況下建立出局 ssh 連線:

ssh -R:60000:127.0.0.1:22 [email protected]

其中[email protected]是您有權存取的公網中的帳戶和實例的位址。該命令基本上意味著以下內容:建立一個 SSH 連線以friendly.domain.tld使用使用者joe進行身份驗證並將遠端的本機 tcp 連接埠 22 公開為 tcp 連接埠 60000。將本機轉送連接埠對應到上面向網際網路的IP 位址friendly.domain.tld,但我在這裡假設不允許這樣的設定。

現在,我們的機器已經建立了傳出鏈接,從任何地方連接到它所需要做的就是friendly.domain.tld在我們的 SSH 連接中使用代理。為此,您需要打開兩個終端視窗:第一個視窗將用於與實例建立鏈接,friendly.domain.tld以將公開的 tcp 連接埠 60000 連接埠轉發到您的本機電腦:

ssh -L60000:127.0.0.1:60000 [email protected]

這會將環回介面上的 tcp 連接埠 60000friendly.domain.tld對應到您正在執行 ssh 命令的實例的環回介面。

從此時起,您只需使用以下命令即可連接到 NAT 後面的電腦:

ssh -p60000 my_account@localhost

my_accountNAT 後面的電腦上的帳戶在哪裡。

總而言之,共有三個 SSH 隧道在運作:

machine_behind_nat <=1=> friendly_instance <=2=> your_laptop
            <=================3==================>

進行這種設定的原因是為了確保即使“friend_instance”被破壞,您與NAT 後面的機器的通信也不會受到損害(除了允許“friend_instance”通過其環回接口傳輸字節之外,我們不信任“ friend_instance」)。在我們的隧道 #3 中使用端對端加密,該隧道通過隧道 #1 和 #2。

我覆蓋了我的博客中的這個設置如果你想要一些背景知識和其他技巧,你可以使用 ssh。

答案2

根據實際連接埠轉送的需要,您可以使用 ssh 進行動態反向連接埠轉送。

如果您只需要代理連接埠 22 :

ssh -R 22:0.0.0.0:2222 user@remote_server

然後您可以在本機上執行 ssh 操作:

ssh -p 2222 localuser@ProxyIP

如果要動態轉送:

ssh -R 0.0.0.0:2222 user @remote_server

您可以使用代理鏈存取本機網路上的任何內容。請注意,任何知道您的 SOCKS 代理的遠端 IP 和連接埠的人都可以存取您的本機網路。您可能需要實施防火牆來限制誰可以存取它。

這是一篇談論它的好文章:https://posts.specterops.io/offense-security-guide-to-ssh-tunnels-and-proxies-b525cbd4d4c6

相關內容