OpenSSH

建立一個反向 ssh 隧道只需一個開關 -R 到原始命令。

命令列

假設你使用命令 ssh guest@example.com 作為使用者 guest 連線到 example.com。開啟反向隧道可能如下所示:

ssh -R 2222:localhost:22 guest@example.com

它將在遠端伺服器上開啟一個埠 2222(僅限環回介面),並且該埠的每個連線都將轉發到本地計算機 ssh 伺服器(埠 22)。

這也假設你已在伺服器上的 sshd_config 中允許選項 AllowTcpForwarding yesPermitOpen any。否則它將失敗並出錯

open failed: administratively prohibited: open failed

如果要允許轉發埠可以在其他網路地址(而不是 localhost)上訪問,則還需要允許 GatewayPorts yes 並使用 IP 地址或主機名或 IP):

ssh -R 2222:example.com:22 guest@example.com

組態

此外,你可以在~/.ssh/config 中指定遠端埠轉發,以避免每次連線時鍵入相同的行。如果經常連線到主機並且不希望每次都啟動埠轉發,那麼良好的做法可能是為主機設定別名,該主機將進行此轉發:

Host example.com-R
  Hostname example.com
  User guest
  RemoteForward 2222 localhost:22

然後使用 ssh example.com-R 建立遠端埠轉發

在後臺執行

埠轉發可以簡單地在後臺使用交換機 -N 執行(不要執行遠端命令,只執行轉發),-f(驗證後轉到後臺),-T(禁用遠端 TTY 分配)。把它們放在一起:

ssh -NTfR 2222:localhost:22 guest@example.com