Windows 上的 OpenSSH 始終將用於遠端轉送的套接字綁定到 LOOPBACK

Windows 上的 OpenSSH 始終將用於遠端轉送的套接字綁定到 LOOPBACK

如標題所說。

主機 A 充當伺服器(堡壘主機,無論你怎麼稱呼它)。

現在,主機B執行:

ssh -R 2222:localhost:22 用戶@A

結果,一個 TCP 套接字在 A 處生成,但它綁定到 2222@環回即阻止對其進行遠端連線。

如何將 127.0.0.1 改為 0.0.0.0或其他任何東西更明智嗎?

答案1

您缺少規範bind_address的可選部分-R。在裡面ssh文件(如連結微軟)它寫道,

預設情況下,伺服器上的 TCP 偵聽套接字將僅綁定到環回介面。這可以透過指定bind_address.空bind_address或位址*表示遠端套接字應偵聽所有介面。僅當啟用bind_address伺服器選項時,指定遠端才會成功(請參閱GatewayPortssshd_配置(5))。

您正在使用參數的三元組版本,但需要四元組版本:

-R port:host:hostport
-R [bind_address]:port:host:hostport

因此,要允許任何人連接到遠端伺服器上的偵聽端口,您需要確保GatewayPorts在伺服器的sshd_config 使用如下命令變體:

ssh -R :2222:localhost:22 user@A

前導冒號 ( :) 也意味著前導星號通配符,允許從任何地方進行連接。就我個人而言,我認為這個版本帶有通配符的版本更清楚地表明所寫內容是有意為之:

ssh -R *:2222:localhost:22 user@A

相關內容