本地转发和远程转发
ssh 端口转发需要 sshd 服务器配置 /etc/ssh/sshd_config 中tcp转发选项为开启:
AllowTcpForwarding yes
1 本地转发
ssh -L <local port>:<remote host>:<remote port> <SSH hostname>
本地转发在本地这台机器上监听一个端口,然后所有访问这个端口的数据都会通过ssh 隧道传输到远端的对应端口上
应用场景,例如:
外部服务器有黑名单限制
2 远程转发
ssh -R <远程端口>:<本地主机>:<本地端口> <user@远程主机>
远程转发与本地转发正好相反,打开ssh隧道以后,在远端服务器监听一个端口,所有访问远端服务器指定端口都会通过隧道传输到本地的对应端口上
应用场景,例如:
外部服务器访问本机,如接收微信支付的回调通知,因为开发机器没有外网IP
ssh服务器的sshd的配置中需要开启如下选项,否则无效:
GatewayPorts yes
示例:
ssh -NR 31234:localhost:7100 root@远程主机
对远程主机31234端口的访问,被转发到本地主机的7100端口
可能出现的问题:
a、进行远程端口转发时报错类似如下,表示在远程服务器上<远程端口>被占用了,需要修改一下
Warning: remote port forwarding failed for listen port <远程端口>
b、远程端口被防火墙、安全组等拦截
3 端口转发时可用的参数
-C:压缩数据传输。
-f :后台认证用户/密码,通常和-N连用,不用登录到远程主机。
-N :不执行脚本或命令,通常与-f连用。不使用Shell窗口,纯做转发的时候用