SSH 端口转发可以使两台机器之间通过SSH协议来通讯,这项能力可以让两个不支持 SSL 加密的应用之间的通讯也变得安全。 此外,ssh 端口转发也常用于将位于内部网络无法路由的机器暴露给外部使用。
SSH 端口转发主要有两种:本地端口转发和远程端口转发。不同类型的端口转发其作用也不一样。
本地端口转发其实很好理解,就是在本地端口和远程主机端口之间创建一个通道,当其他主机连接本地主机的端口时就会将所有数据转发到远程主机上的端口上去了。
使用本地端口转发的命令为,在本地主机上执行:
- ssh -L 本地端口:目标主机:目标端口 转发主机
-
这样所有连接本地主机上本地端口的数据,都会通过转发主机转发到目标主机的目标端口上去了(当然前提是转发主机和本地主机、目标主机都是联通的),需要注意的是,这里的目标主机是相对转发主机来说的,也就是说,如果目标主机为 localhost,那么目标主机指的是转发主机,而不是本地主机,这一点比较反直觉。
远程端口转发常用于将位于内部网络无法路由的机器暴露给外部使用,使用远程端口转发的命令为,在转发主机上执行:
- ssh -R 远程端口:目标主机:目标端口 远程主机
-
这样所有连接到远程主机上远程端口的数据,都会通过转发主机转发到目标主机的目标端口上去了(当然前提是转发主机和本地主机、目标主机都是联通的),注意,这里的目标主机也是相对于转发主机来说的,也就是说,如果目标主机为localhost,那么目标主机指的是转发主机,而不是远程主机。
比如,我想在外网上管理内网上的 OrangePi,那么可以这样做:
其中 ssh 中的参数说明如下: