SSH 端口转发配置

SSH开启端口转发需要修改 /etc/ssh/sshd_config配置文件,将 GatewayPorts修改为yes

参数解释:

-f 后台执行ssh指令
-C 允许压缩数据
-N 不执行远程指令
-R 将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口
-L 本地端口转发
-D 动态端口转发

简版:本地端口转发(相当于正向代理),本地监听16379端口,将16379端口的流量都转发给6379端口

1
ssh -fCNL *:16379:localhost:6379 localhost

SSH做反向隧道(远程端口转发)实例

image-20220214213238533

  1. server的配置
1
2
# 将Server的22号端口的流量都转发给跳板机2的5555端口
ssh -fCNR 跳板机2:5555:localhost:22 root@跳板机2
  1. 跳板机2的配置
1
ssh -fCNR 跳板机1:5555:localhost:8888 root@跳板机1
  1. 跳板机1的配置
1
2
3
# 正向代理
# 本地监听的1234端口的流量都转发给本地的8888端口
ssh -fCNL *:1234:localhost:8888 localhost

PC1上

1
ssh -p 1234 root@跳板机1

最终连接到了server的22端口上

缺点:这种ssh反向链接会因为超时而关闭,如果关闭了那从外网连通内网的通道就无法维持。

解决方法:使用 autossh来连接。
反向代理

1
autossh -M 9999 ssh -fCNR  跳板机1:5555:localhost:22  localhost

-M 参数,用来监听ssh的状态,如果端口之后,从9999端口发送信息,进而进行重新连接。