Linux
帶有多個埠的 SSH 遠端埠轉發
對於那些使用 ssh 埠轉發或有想法的人,我設法通過 ssh 伺服器(具有公共地址)。
目標是通過 ssh 遠端埠轉發將攝影機的訪問權限轉發給公眾,
我在 PC 上啟動的命令格式為:
ssh -R sshServer_port:destination_address:destination_port sshServer_address
例子:
ssh -R 3000:192.198.1.210:80 ubuntu@52.14.9.210
在 sshServer 中,我可以通過 localhost:3000 訪問遠端機器
然後,我設置了一個 tcpproxy 以使用以下命令公開訪問:
tcpproxy -lhost 0.0.0.0:8080 -rhost localhost:3000
這樣,來自任何網路的任何人都可以通過鍵入 52.14.9.210:8080 訪問相機界面
我想要做的是創建一個隧道,它使用以下命令格式偵聽兩個遠端機器埠(80 用於 http,8000 用於實時流):
ssh -R sshServer_port:destination_address:destination_port1 -R sshServer_port:destination_address:destination_port2 sshServer_address
例子:
ssh -R 3000:192.168.1.210:80 -R 3000:192.168.1.210:8000 ubuntu@52.14.9.210
我嘗試執行該命令,但出現此錯誤:警告:偵聽埠 3000 的遠端埠轉發失敗
你知道如何解決這個問題。
你想要的不是創建一個監聽兩個遠端機器埠的隧道,你想要兩個監聽同一個遠端埠的隧道。
這是不可能的。ssh 應該如何知道傳入連接應該轉發到哪個埠?
有一些解決方案可以區分協議,但它們都不是通用的。如果您使用的埠 80 表示 http 流量,您可以設置反向代理,但為兩個目的地使用兩個不同的埠會容易得多。
編輯
從您的評論來看,您似乎只是缺少
-g
SSH 以允許其他主機連接到隧道的選項。