远程转发
# 远程转发
远程端口指的是在远程 SSH 服务器建立的转发规则。
这种场景比较特殊,主要针对内网的情况。本地计算机在外网,SSH 跳板机和目标服务器都在内网,而且本地计算机无法访问内网之中的 SSH 跳板机,但是 SSH 跳板机可以访问本机计算机。
由于本机无法访问内网 SSH 跳板机,就无法从外网发起 SSH 隧道,建立端口转发。必须反过来,从 SSH 跳板机发起隧道,建立端口转发,这时就形成了远程端口转发。
$ ssh -R local-port:target-host:target-port -N local
1
上面的命令,首先需要注意,不是在本机执行的,而是在 SSH 跳板机执行的,从跳板机去连接本地计算机。-R
参数表示远程端口转发,local-port
是本地计算机的端口,target-host
和target-port
是目标服务器及其端口,local
是本地计算机。
显然,远程端口转发要求本地计算机也安装了 SSH 服务器,这样才能接受 SSH 跳板机的远程登录。
比如,跳板机执行下面的命令,绑定本地计算机的2121
端口,去访问www.example.com:80
。
$ ssh -R 2121:www.example.com:80 local -N
1
执行上面的命令以后,跳板机到本地计算机的隧道已经建立了。然后,就可以从本机访问目标服务器了,即在本机执行下面的命令。
$ curl http://localhost:2121
1
执行上面的命令以后,命令就会输出服务器www.example.com
的80端口返回的内容。
如果经常执行远程端口转发,可以将设置写入 SSH 客户端的用户个人配置文件(~/.ssh/config
)。
Host test.example.com
RemoteForward local-IP:local-port target-ip:target-port
1
2
2
上次更新: 2023/10/17, 16:39:02