ssh端口转发说明
SSH端口转发可以使两台机器之间通过SSH协议来通讯,这项能力可以让两个不支持SSL加密的应用之间的通讯也变得安全。 此外,ssh端口转发也常用于将位于内部网络无法路由的机器暴露给外部使用。
SSH端口转发主要有两种:本地端口转发和远程端口转发。不同类型的端口转发其作用也不一样。
本地端口转发
本地端口转发其实很好理解,就是在本地端口和远程主机端口之间创建一个通道,当其他主机连接本地主机的端口时就会将所有数据转发到远程主机上的端口上去了。
使用本地端口转发的命令为,在本地主机上执行:
ssh -L 本地端口:目标主机:目标端口 转发主机
这样所有连接本地主机上本地端口的数据,都会通过转发主机转发到目标主机的目标端口上去了(当然前提是转发主机和本地主机、目标主机都是联通的)。
需要注意的是,这里的目标主机是相对转发主机来说的,也就是说,如果目标主机为localhost,那么目标主机指的是转发主机,而不是本地主机,这一点比较反直觉。
远程端口转发
远程端口转发常用于将位于内部网络无法路由的机器暴露给外部使用.
使用远程端口转发的命令为,在转发主机上执行:
ssh -R 远程端口:目标主机:目标端口 远程主机
这样所有连接到远程主机上远程端口的数据,都会通过转发主机转发到目标主机的目标端口上去了(当然前提是转发主机和本地主机、目标主机都是联通的).
注意,这里的目标主机也是相对于转发主机来说的,也就是说,如果目标主机为localhost,那么目标主机指的是转发主机,而不是远程主机。
比如,我想在外网上管理内网上的OrangePi,那么可以这样做:
- 购买一个能在外网访问的VPS
- 配置VPS上
/etc/sshd_config
中GatewayPorts
为true
, 并重启VPS上的sshd服务 在OrangePi上执行
ssh -fNT -R 6022:localhost:22 VPS
. 则通过ssh VPS -p 6022
就能登陆到OrangePi上进行管理了。其中ssh中的参数说明如下:
- -f
- 表示SSH连接成功后,转入后台运行.
- -N
- 表示只连接远程主机,不打开远程shell.
- -T
- 表示表示不为这个连接分配TTY,其与-N参数放在一起,表示这个SSH连接只传数据,不执行远程操作