在日常的工作中,常常需要远程对服务器进行操作,常用的几种ssh连接有Xshell、SecureCRT、putty等等,这几种工具各有自己的优点,解决问题的方法也有多种,今天主要来看一下Xshell的几种端口转发的应用。
Xshell的隧道模式下,主要有三种端口转发模式,分别是:
1).Local(Outgoing)
2).Remote(Incoming)
3).Dynamic(SOCKS4/5)
Local(Outgoing)
用于把服务器上的服务映射到本机的某端口上,在本机访问该端口,实际是访问服务器上的服务。
Remote(Incoming)
和Local(Outgoing)相反,将本地的端口映射到服务器的某一端口上,在服务器上访问该端口,实际是访问本机的服务。
Dynamic(SOCKS4/5)
通过设定本地监听的特定端口,实现远程服务器代理上网(ssh 隧道);
一、Local(Outgoing):
1.填写好远程服务器的登录信息:
2.选择"ssh-->隧道" 选项卡,点击"添加" 进行配置:
这里实现功能一,选择Local的方式,源主机填写的是本地的IP或者是localhost,侦听的端口填写的是本地的端口,目标地址填写的是远程服务器的IP地址,目标端口填写的是远程服务器上的服务监听端口,点击"确定"完成配置。
3.登录到我们配置过的服务器,在Xshell下方的"隧道窗格"中,将看到我们配置的转发规则,如下:
注意看规则的第一行转发配置,确保状态是打开,如果显示的是失败可能是9000这个本地端口已经被占用了,可以尝试将侦听端口修改为其它端口进行重新设置。
4.访问测试:
通过localhost:9000端口,访问到远程服务器的IIS服务器,因为特殊原因,就不放出网站的内容,仅作为测试。
二、Remote(Incoming)
上述的Local转发用于把远程服务器上的服务映射到本机的端口上,Remote则是相反的,它将本地的端口映射到远程服务器的某一端口上,在远程服务器上访问该端口,实际是访问本机的服务。这种方法可能为本地局域网带来风险,如果能成功登陆到本地局域网的某一台机器,那么整个局域网都会有可能被访问到。
1.在上述实验的基础上继续进行,选择"ssh-->隧道" 选项卡,点击"添加" 进行配置:
这里实现功能二,选择Remote的方式,源主机填写的是远程服务的IP或者是localhost,侦听的端口填写的是远程服务器的端口,目标地址填写的是本地私网IP地址,目标端口填写的是本地的服务监听端口,点击"确定"完成配置。
2.登录到配置好的服务器上,在"隧道窗格" 可以看到以下规则:
注意第二条,通过远程服务器上的localhost:18088端口,就能访问到我本地192.168.1.72(本机)的ssh服务。注意状态,如果是"失败",可能是远程的服务器18088端口已经被占用,请重新配置。
3.测试连接,在远程服务器上执行:
成功登录我的本地windows机器,现在可以通过其他的方式,尝试访问本地局域网中的其他机器。
三、Dynamic(SOCKS4/5) 之一
种就是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
方式一.脚本形式, 使用ProxyCommand命令
1. 先在192.168.100.104设置代理,通过 1080 端口,提供 Socket5 代理服务
2.$ ssh -o ProxyCommand="nc -X 5 -x 192.168.100.104:1080 %h %p" root@192.168.100.113 #即把100.104作为代理,访问100.113
方式二. xshell图形界面形式
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).通过这种方法登录,