[SSH服务]——SSH端口转发

时间:2022-11-14 13:53:22

实验拓扑图

实验描述

假设有三台主机A、B、C。B和A、C可以连通,AC两台主机不能连通。

这时候可以用本地端口转发,来实现A和C通过B来连通。

实验中,为了构造上述环境,我们使用三台虚拟机,其网络环境设置如拓扑图所示:

(1) 主机A :eth1(172.16.10.1/24)

(2) 主机B: eth0(172.16.10.3/24)     eth1(172.16.20.1/24)

(3) 主机C: eth0(172.16.20.1/24)

实验与验证

1. 确保B和A、C的连通,A、C不能连通(符合实验环境)

[SSH服务]——SSH端口转发

[SSH服务]——SSH端口转发

2. 在A、B的ssh配置文件/etc/ssh/sshd_config中开启允许转发的选项,并重启ssh服务

# vim /etc/ssh/sshd_config
GatewayPorts       yes
AllowTcpForwarding yes
# service sshd restart

3. 在主机C安装httpd并启动http服务,为了更好的验证我们在主机C的站点主目录下写一个“小文件”

# yum install httpd -y
# vim /var/www/html/index.html
hello,I'm 172.16.20.2
# service httpd start

4. 在主机A上执行命令:

# ssh -l  root  -L 172.16.10.1::172.16.20.2:  172.16.10.3

参数-L后面总共有四个用冒号分割的值,分别是 '本地地址:本地端口:目标主机:目标主机端口'

这条命令的意思是:

指定SSH绑定本地主机A(172.16.10.1)的59000端口,转发到目标主机C(172.16.20.2)的80端口。并指定由主机B(192.16.10.3)来转发。

执行结果:

[SSH服务]——SSH端口转发

5. (注意不要退出上一步骤的命令)在A新打开一个终端(Ctrl+Alt+F2)来验证就好,执行命令:

# curl  http://172.16.10.1:59000

执行结果:

[SSH服务]——SSH端口转发

这说明:

      我们连接了本地主机A的59000端口,就等于连上了主机C 172.16.20.2的80端口。


补充

1. 本实验参考了文章:http://my.oschina.net/guol/blog/115235

2. 实验过程中要注意防火墙的设置,最好 # iptables -F 清除一下防火墙规则