浅谈Xshell三种隧道(端口)转发
在日常的工作中,常常需要远程对服务器进行操作,常用的几种ssh连接有Xshell、SecureCRT、putty等等,这几种工具各有自己的优点,解决问题的方法也有多种,今天主要来看一下Xshell的几种端口转发的应用。
Xshell的隧道模式下,主要有三种端口转发模式,分别是:
1).Local(Outgoing)
2).Remote(Incoming)
3).Dynamic(SOCKS4/5)
笔者测试使用的这批机器前端设有硬件防火墙,而且后端的服务器并未完全开放端口映射,一些服务只能通过登录到开放了端口映射机器上,然后再通过内网去访问,这样对管理工作增添了不少麻烦,下文将通过端口转发实现以下几个功能:
功能一:
通过访问本地(localhost)下的特定端口,直接访问到远程服务器上面的服务;
功能二:
通过访问远程服务器上的特定端口,反向连接到本地局域网中的服务上;
功能三:
通过设定本地监听的特定端口,实现远程服务器代理上网(ssh 隧道);
功能四:
通过开放了防火墙端口映射的远程服务器,代理登录到远程局域网(防火墙后端)未开放端口映射的服务器上。
一、Local(Outgoing):
这种方式多于访问那些侦听了回环地址的服务,或者是位于防火墙后面,或没有监听公网ip的服务。
1.填写好远程服务器的登录信息:
2.选择"ssh-->隧道" 选项卡,点击"添加" 进行配置:
这里实现功能一,选择Local的方式,源主机填写的是本地的IP或者是localhost,侦听的端口填写的是本地的端口,目标地址填写的是远程服务器的IP地址,目标端口填写的是远程服务器上的服务监听端口,此处笔者的28012是IIS服务器监听的端口。点击"确定"完成配置。
3.登录到我们配置过的服务器,在Xshell下方的"隧道窗格"中,将看到我们配置的转发规则,如下:
注意看规则的第一行转发配置,确保状态是'打开',如果显示的是'失败'可能是9000这个本地端口已经被占用了,可以尝试将'侦听端口'修改为其它端口进行重新设置。
4.访问测试:
通过localhost:9000端口,访问到远程服务器的IIS服务器,因为特殊原因,就不放出网站的内容,仅作为测试。
二、Remote(Incoming)
上述的'Local'转发用于把远程服务器上的服务映射到本机的端口上,'Remote'则是相反的,它将本地的端口映射到远程服务器的某一端口上,在远程服务器上访问该端口,实际是访问本机的服务。前一种方法是在本地的防火墙上开了一个端口;而后者是则是凿一个洞,可能为本地局域网带来风险,(这个有点反向代理的意思)尤其是做了到ssh端口映射,如果能成功登陆到本地局域网的某一台机器,那么整个局域网都会有可能被访问到。
1.在上述实验的基础上继续进行,选择"ssh-->隧道" 选项卡,点击"添加" 进行配置:
这里实现功能二,选择Remote的方式,源主机填写的是远程服务的IP或者是localhost,侦听的端口填写的是远程服务器的端口,目标地址填写的是本地私网IP地址,目标端口填写的是本地的服务监听端口,此处笔者安装了ssh服务进行测试。点击"确定"完成配置。
2.登录到配置好的服务器上,在"隧道窗格" 可以看到以下规则:
注意第二条,通过远程服务器上的localhost:18088端口,就能访问到我本地192.168.1.72(本机)的ssh服务。注意状态,如果是"失败",可能是远程的服务器18088端口已经被占用,请重新配置。
3.测试连接,在远程服务器上执行:
成功登录我的本地windows机器,现在可以通过其他的方式,尝试访问本地局域网中的其他机器,此处不作详细讨论。
三、Dynamic(SOCKS4/5) 之一
这个东东,如果你使用过ssh隧道科学上网,那么这个肯定不会陌生了,这种就是socket代理模式,浏览器设置代理就可以进行代理上网(ssh 隧道代理)。
1.选择"ssh-->隧道" 选项卡,点击"添加" 进行配置:
这里实现功能三,选择Dynamin方式,此处只需要填写侦听端口,填写的是本地的任意端口,默认为1080。
2.登录到配置好的服务器上,在"隧道窗格" 可以看到以下规则:
3.配置浏览器代理:
笔者使用的是谷歌浏览器的代理,firefox或者其他的浏览器,请自行解决。
4.测试代理:
4.1.代理上网测试:
现在的IP地址已经变成远程服务器的IP了。
4.2.本地网络服务测试:
笔者的这批机器搭建了很多应用服务器,我们可以通过这种代理访问到远程服务器局域网中的其他机器上面的服务,这样是很方便进行测试部署的。
四、Dynamic(SOCKS4/5) 之二
这个Dynamic的方式,除了为本地的机器开启上网代理之外,还可以解决直接登录其他机房里只有私网ip的机器,这样就不用先登录有公网ip的机器,然后在那台机器里用ssh再登录内网机器了。具体的思路如下:
windows:本地机器,装有xshell
100.104:外网服务器,有公网ip和私网ip
100.113:外网服务器,只有私网ip
1.这个功能在上面的基础上完成,上面的104就是我们的代理服务器,依旧使用38564这个端口
2.配置好需要登录的服务器(在远程局域网内,并且没做防火墙映射),此处为100.113
务必注意,这里填写的是内网的IP地址,和内网服务监听的端口。
3.选择"ssh-->代理"选项卡,选择"浏览"进行配置:
4为100.113配置代理服务器(此处是100.104):
5.点击"确定"保存配置,选择testproxy为代理配置:
6.测试能否登录到100.113:
可以看到,点击连接,xshell将会通过本地的38564端口连接到100.113,输入用户名,密码就可以成功登录的。
实际上,数据的走向是这样的:localhost:38564<-->123.x.x.x(100.104)ssh 隧道<-->100.103(ssh 22).通过这种方法登录,先前做的ssh信任关系好像失效了,未深入研究。
今天就先写到这里了,其实对于上面的三种方式,都是可以通过网络进行共享代理的,具体的方法不再详述,大家可以多加测试研究,希望对大家有所帮助。
哪里有100.104配置?第四种方式怎么配置的?