Linux
如何設置 ssh 隧道來轉發 ssh?
我在路由器後面有一台裝有 Ubuntu 的電腦,但我無法配置。但是我想通過 ssh 訪問那台電腦。我認為 ssh 隧道是可能的,但我不知道該怎麼做。我有另一台伺服器,我想設置隧道。怎麼做?或者也許你有其他想法如何解決這個問題?
我試過了:
ssh -N user@my_server -L 22/localhost/8090
但它說:
bind: Address already in use channel_setup_fwd_listener: cannot listen to port: 22 Could not request local forwarding.
您要求它在本地埠 22 上偵聽並將連接轉發到遠端系統的埠 8090。您不能這樣做,因為您的本地埠 22 已經被本地 SSH 伺服器佔用。
我認為您正在尋找的是遠端轉發。替換
-L 22:localhost:8090
為-R 8090:localhost:22
將告訴遠端主機偵聽埠 8090 並將請求轉發到您的 SSH 伺服器。
-o TCPKeepAlive=yes
如果您讓連接保持執行以便稍後可以從遠端站點進入,那麼您將需要通過添加相關選項(或-o ServerAliveInterval=30
)來確保連接不會由於不活動而超時所以你最終會得到類似的東西:
ssh -N user@my_server -R 8090:localhost:22 -o ServerAliveInterval=30
此外,如果您和伺服器之間的網路躍點在任何時候發生故障,連接將斷開,儘管您指定了任何 KeepAlive 選項,因此您可能希望將此命令添加到 inittab,或查看 daemontools 包或您的發行版等效,因此它始終在啟動時啟動,並在由於某種原因退出時重新啟動,而不是系統關閉(或者您可以從無限循環的 shell 腳本執行它,但 init 或 daemontools 是更乾淨的解決方案)。