ssh端口转发(ssh隧道)
本地端口映射到其他机器
ssh -Nf -L 18080:18.16.200.110:8083 root@18.16.200.134 -p 22
or
ssh -Nf -L 18.16.202.21:18080:18.16.200.110:8083 root@18.16.200.134 -p 22
- 目标机器为
18.16.200.110
,对外端口为8083
- 跳板机为
18.16.200.134
,端口为22
- 本地端口为
18080
使用上述命令,就可以监听本机的18080
端口,并将命令转发到18.16.200.110
机器的8083
端口上。
访问本机18080
端口,就相当于访问18.16.200.110
的8083
端口应用
参数说明
-
-N 告诉SSH客户端,这个连接不需要执行任何命令。仅仅做端口转发
-
-f 告诉SSH客户端在后台运行
-
-L 做本地映射端口,被冒号分割的三个部分含义分别是最后一个参数是我们用来建立隧道的中间机器的
IP
地址(IP
:18.16.200.134
) -
需要使用的本地端口号(端口:
18080
)- 需要访问的目标机器IP地址(IP:
18.16.200.110
) - 需要访问的目标机器端口(端口:
8083
)
- 需要访问的目标机器IP地址(IP:
案例
-
hostA
映射到hostB
ssh -L 18080:127.0.0.1:8083 root@18.16.200.110
上述的
127.0.0.1
指的是18.16.200.110
上述操作,会将本地
18080
端口的数据转发到18.16.200.110
的8083
端口 -
访问本地端口
ssh -L 9999:18.16.200.110:22 root@18.16.200.134 -p 22
这样访问本机的
9999
端口,就相当于访问了18.16.200.110:22
了ssh localhost -p 9999
远程跳板机端口转发
内网的机器A,公网的机器B,某服务器C
A可以连接B,B可以连接C,但是AC之间不能连接
这个时候如果B能运行一个OpenSSH服务器,那么就可以通过B形成隧道连接AC因为A是内网,所以不能使用C-B-A方案
案例
在跳板机18.16.200.134
节点中执行:
ssh -R 18080:18.16.200.110:8083 qhong@18.16.202.21
使用上述命令,即可访问18.16.202.21:18080
转发到18.16.200.110:8083
端口
参考
[SSH端口转发](