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