前言
有时候由于网络策略的限制,我们无法直接访问目标服务,但有个中间服务器两边互通且可以ssh访问,这时候就可以借助ssh实现端口转发。
假设有以下场景:
- 主机A:192.168.0.20,客户端,能ssh连接B,无法访问C。
- 主机B:192.168.1.2,与A和C互通,有ssh服务,可称为“跳板机”
- 主机C:192.168.1.3,服务端,与B互通,可称为“目标主机”
A能访问到B,但是不能访问到C,如果想要A访问C,可以通过B做ssh端口转发。
命令格式:
# 跳板机的ssh端口如果不是默认的22,需要使用 -p 选项指定端口号
ssh -L 本机闲置端口号:目标主机IP:目标主机端口 跳板机系统用户@跳板机IP
步骤
- 主机A执行以下命令创建ssh端口转发
# 12345是本机任意未被占用的端口号
ssh -L 12345:192.168.1.3:22 [email protected]
- 主机A测试
ssh -p 12345 lisi@localhost
其它
- 每60秒发送一个keepalive请求,保证连接不会因为超时空闲而断开
ssh -o ServerAliveInterval=60
-L
可同时指定多个代理规则