將遠端 tcp 埠轉發到本地埠
該設備不斷嘗試連接到特定已知埠上的遠端伺服器。
在遠端伺服器上,除了打開的 TCP 埠之外什麼都沒有。
我想將遠端伺服器的埠轉發到我的電腦並打開一個 TCP 伺服器來讀取數據。
最終,我想使用 Python 來實現這一點,
但與此同時,我正在嘗試使用 ssh 來執行此操作:
ssh -N -R 10000:localhost:10000 username@hostname
,並且在我這邊(我的電腦),我試圖打開一個套接字(使用 python)來收聽10000埠,嘗試打開Hercules模擬TCP伺服器,但沒有收到任何數據。
顯然,缺少了什麼,它是什麼?
ps 在遠端伺服器上打開 TCP 伺服器將獲取數據,
但我需要控制來自 My Pc 的連接。
以下是關於
-R
inssh
手冊頁的相關部分:
-R [bind_address:]port:host:hostport
$$ … $$ 預設情況下,伺服器上的 TCP 偵聽套接字將僅綁定到環回介面。這可以通過指定 bind_address 來覆蓋。空的bind_address 或地址 ‘’**表示遠端套接字應偵聽所有介面。**僅當啟用***了伺服器選項時,指定遠端 bind_address 才會成功(請參閱 參考資料)。
GatewayPorts
sshd_config(5)
遠端伺服器上的偵聽套接字僅在本地主機上偵聽,因此來自 UNIT 的連接被拒絕(即:它是“關閉的”)。
因此,如果伺服器已經允許它,只需使用它就可以了:
ssh -N -R :10000:localhost:10000 username@hostname
請注意
:
前面有“一個空的 bind_address”(也可以使用實際的遠端伺服器面向 UNIT 的 IP 地址)。這應該改進為:ssh -o ExitOnForwardFailure=yes -N -R :10000:localhost:10000 username@hostname
以防止錯誤地執行它兩次。
但是預設情況下通常不允許使用這種類型的綁定地址,需要更改遠端伺服器的sshd配置。
GatewayPorts
在遠端伺服器上,配置文件通常/etc/ssh/sshd_config
應該被修改為有一個(未註釋的)條目,如下所示:GatewayPorts clientspecified
並且應該重新載入 ssh 守護程序以使用其新配置。