正向隧道
拓扑如下:
说明:
CLIENT不能直接访问WEB服务器,AGENT可访问WEB服务器;
在AGENT上通过创建ssh正向隧道,使CLIENT可以通过AGENT间接访问WEB服务器;
AGENT需要SSH客户端和服务端。
AGENT上执行指令如下:
[[email protected] ~]# [[email protected] ~]# netstat -antp | grep 8880 [[email protected] ~]# ssh -g -f -NL 100.1.1.100:8880 [[email protected] ~]# [[email protected] ~]# [[email protected] ~]# netstat -antp | grep 8880 [[email protected] ~]# [[email protected] ~]# ssh -g -f -NL 100.1.1.100:8880:172.19.2.250:80 [email protected] [email protected]‘s password: [[email protected] ~]# netstat -antp | grep 8880 tcp 0 0 100.1.1.100:8880 0.0.0.0:* LISTEN 3826/ssh [[email protected] ~]#
说明:使用root账户登录100.1.1.100(自己),然后将自己的8880端口映射到172.19.2.250的80端口。
在CLIENT访问测试:
测试成功!
另一拓扑:
说明:
AGENT2和CLIENT都不能直接访问WEB服务器,只有AGENT1可以访问WEB服务器;
在AGENT2和AGENT1之间创建SSH正向隧道,使CLIENT可以通过AGENT2访问WEB服务器;
AGENT2需要安装SSH客户端,AGENT1需要安装SSH服务端。
在AGENT2上执行指令如下:
说明:在AGENT2上通过root用户ssh连接到AGENT1,并将自己的8880端口映射到WEB的80端口。
[[email protected]~]# ssh -g -f -NL 100.1.1.1:8880:172.19.2.250:80 [email protected]
以上两个拓扑中创建隧道的主机(ssh客户端)也可以是windows主机,使用xshell、putty等工具也可以实现,以第二个拓扑,使用xshell举例设置如下:
打开会话链接
本地端口已经监听
访问测试
测试成功 !
注:如果使用xshell等类似ssh客户端工具创建SSH隧道时,连接会话断开会导致隧道失效,而linux的ssh客户端则不会。
反向隧道
说明:
CLIENT不能直接访问AGENT1,此时AGENT1可以通过在与WEB之间建立反向隧道的方法,让CLIENT可以访问AGENT1的22端口;
AGENT1需要安装SSH客户端,WEB需要安装SSH服务端;
在AGENT1上执行指令如下:
[[email protected] ~]# ssh 172.19.2.250 [email protected]‘s password: Last login: Tue May 3 11:35:00 2016 from 192.168.6.44 [[email protected] ~]# netstat -antp | grep 22022 [[email protected] ~]# [[email protected] ~]# exit logout Connection to 172.19.2.250 closed. [[email protected] ~]# ssh -g -f -NR 172.19.2.250:22022:100.1.1.100:22 [email protected] [email protected]‘s password: Permission denied, please try again. [email protected]‘s password: [[email protected] ~]# netstat -antp | grep 22022 [[email protected] ~]# ssh 172.19.2.250 [email protected]‘s password: Last login: Tue May 3 11:35:26 2016 from 192.168.6.44 [[email protected] ~]# netstat -antp | grep 22022 tcp 0 0 127.0.0.1:22022 0.0.0.0:* LISTEN 19370/sshd tcp 0 0 ::1:22022 :::* LISTEN 19370/sshd [[email protected] ~]#
说明:首先确认在WEB服务器上确认没有监听22022端口,然后再AGENT上执行反向隧道创建指令,意思是将100.1.1.100的22端口映射为172.19.2.250的22022端口,执行后,发现WEB服务上监听了22022端口,但IP却为127.0.0.1,解决办法是将WEB服务器的SSH服务的配置文件中"GatewayPorts no"改为yes即可,重启SSH服务,并在AGENT1上重新创建反向隧道
[[email protected] ~]# netstat -antp | grep 22022 tcp 0 0 0.0.0.0:22022 0.0.0.0:* LISTEN 20614/sshd tcp 0 0 :::22022 :::* LISTEN 20614/sshd [[email protected] ~]#
链接测试:
链接成功 !
在使用xshell创建反向隧道时,修改类型即可