码迷,mamicode.com
首页 > 其他好文 > 详细

SSH正反向隧道

时间:2016-05-03 12:52:55      阅读:1355      评论:0      收藏:0      [点我收藏+]

标签:服务器   客户端   服务端   


正向隧道


拓扑如下:

技术分享

说明:

CLIENT不能直接访问WEB服务器,AGENT可访问WEB服务器;

在AGENT上通过创建ssh正向隧道,使CLIENT可以通过AGENT间接访问WEB服务器;

AGENT需要SSH客户端和服务端。


AGENT上执行指令如下:

[root@pool-100-1-1-100 ~]# 
[root@pool-100-1-1-100 ~]# netstat -antp | grep 8880
[root@pool-100-1-1-100 ~]# ssh -g -f -NL 100.1.1.100:8880
[root@pool-100-1-1-100 ~]# 
[root@pool-100-1-1-100 ~]# 
[root@pool-100-1-1-100 ~]# netstat -antp | grep 8880
[root@pool-100-1-1-100 ~]# 
[root@pool-100-1-1-100 ~]# ssh -g -f -NL 100.1.1.100:8880:172.19.2.250:80 root@100.1.1.100
root@100.1.1.100‘s password: 
[root@pool-100-1-1-100 ~]# netstat -antp | grep 8880
tcp        0      0 100.1.1.100:8880            0.0.0.0:*  
                 LISTEN      3826/ssh            
[root@pool-100-1-1-100 ~]#


说明:使用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端口。

[root@pool-100-1-1-1~]# ssh -g -f -NL 100.1.1.1:8880:172.19.2.250:80 root@100.1.1.100


以上两个拓扑中创建隧道的主机(ssh客户端)也可以是windows主机,使用xshell、putty等工具也可以实现,以第二个拓扑,使用xshell举例设置如下:

技术分享

技术分享

技术分享

技术分享

技术分享

打开会话链接

技术分享

本地端口已经监听

技术分享

访问测试

技术分享

测试成功 !


注:如果使用xshell等类似ssh客户端工具创建SSH隧道时,连接会话断开会导致隧道失效,而linux的ssh客户端则不会。



反向隧道

技术分享

说明:

CLIENT不能直接访问AGENT1,此时AGENT1可以通过在与WEB之间建立反向隧道的方法,让CLIENT可以访问AGENT1的22端口;

AGENT1需要安装SSH客户端,WEB需要安装SSH服务端;


在AGENT1上执行指令如下:

[root@pool-100-1-1-100 ~]# ssh 172.19.2.250
root@172.19.2.250‘s password: 
Last login: Tue May  3 11:35:00 2016 from 192.168.6.44
[root@localhost ~]# netstat -antp | grep 22022
[root@localhost ~]# 
[root@localhost ~]# exit
logout
Connection to 172.19.2.250 closed.
[root@pool-100-1-1-100 ~]# ssh -g -f -NR 172.19.2.250:22022:100.1.1.100:22 root@172.19.2.250
root@172.19.2.250‘s password: 
Permission denied, please try again.
root@172.19.2.250‘s password: 
[root@pool-100-1-1-100 ~]# netstat -antp | grep 22022
[root@pool-100-1-1-100 ~]# ssh 172.19.2.250
root@172.19.2.250‘s password: 
Last login: Tue May  3 11:35:26 2016 from 192.168.6.44
[root@localhost ~]# 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          
[root@localhost ~]#

说明:首先确认在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上重新创建反向隧道

[root@localhost ~]# 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          
[root@localhost ~]#

链接测试:

技术分享

链接成功 !


在使用xshell创建反向隧道时,修改类型即可

技术分享

本文出自 “逆行者” 博客,请务必保留此出处http://lingyi.blog.51cto.com/2837715/1769613

SSH正反向隧道

标签:服务器   客户端   服务端   

原文地址:http://lingyi.blog.51cto.com/2837715/1769613

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!