ssh -R 僅在遠端綁定到 127.0.0.1
我正在執行
ssh -N -f -R127.0.2.3:23000:127.1.2.3:23000 user@remote
,我希望遠端上的隧道已經打開127.0.2.3:23000
,但它只打開127.0.0.1:23000
,這很不方便,因為我需要在遠端上打開幾個隧道,但要監聽同一個 tcp 埠。在本地機器中,隧道指向正確的 IP 地址(127.1.2.3:23000)。
我嘗試在遠端創建多個環回設備,但無濟於事。
Linux 和 Freebsd 伺服器也是如此(openbsd-ssh)
那麼,為什麼 ssh -R 沒有綁定到 127.0.0.1 以外的遠端環回 ip?
謝謝你。
(抱歉編輯不好:)
雖然本地可選綁定地址由 SSH 的客戶端控制(在客戶端的配置中用/指定或用
-L
/LocalForward
更改),但客戶端用/指定的遠端可選綁定地址由SSH 的伺服器端控制伺服器配置。_ 預設情況下它是. 它應該設置為允許客戶端選擇綁定到哪個地址:-g
GatewayPorts
-R
RemoteForward
GatewayPorts
no``clientspecified
GatewayPorts
指定是否允許遠端主機連接到為客戶端轉發的埠。預設情況下,sshd(8) 將遠端埠轉發綁定到環回地址。這可以防止其他遠端主機連接到轉發埠。
GatewayPorts
可用於指定 sshd 應允許遠端埠轉發綁定到非環回地址,從而允許其他主機連接。參數可能是no
強制遠端埠轉發僅對本地主機可用,yes
強制遠端埠轉發綁定到萬用字元地址,或者**clientspecified
允許客戶端選擇**轉發綁定的地址。預設值為no
.此外,客戶的
RemoteForward
條目同樣告訴:$$ … $$
如果未指定 bind_address,則預設僅綁定到環回地址。如果 bind_address 是 ‘*’ 或空字元串,則請求轉發以偵聽所有介面。 僅當啟用伺服器的選項時,指定遠端 bind_address 才會成功
GatewayPorts
(請參閱 sshd_config(5))。所以你必須能夠在伺服器上更改 ssh 的伺服器配置(通常具有 root 訪問權限),並在
sshd_config
文件中添加(或編輯)此條目,因此它顯示:GatewayPorts clientspecified
如果不能,您可以使用伺服器端存在(或本地可安裝)的其他可用工具來克服這個(相當薄弱的)安全限制。例如
socat
,或ssh
自身通過使用LocalForward
從伺服器到自身(即使它無用地添加一層加密)。