通常为了安全,服务器需要通过跳板机访问,服务器对外网暴露的端口也严格限制。这种情况下若要在本地
访问服务器上的服务或系统就会比较蛋疼。
有一个简单的解决方案,就是在本地和跳板机之间建立SSH隧道。SSH隧道提供了一个网络代理服务,
通过该代理服务可以直接访问跳板机所在的局域网,即服务器上的任意端口,服务都可以直接访问。
本文介绍的方法比一般的端口映射更方便,不需要为每个端口配置一条SSH隧道,包括Windows、Mac、Linux上的操作方法。
非常简单,只需一条命令即可建立SSH隧道。
ssh user@host -ND 127.0.0.1:1080 |
其实就是在常规的SSH命令加上-D
参数,开启动态端口转发,使SSH成为了SOCKS server,在后台提供网络服务。
而-N
参数是让ssh不要返回命令行终端,因为我们不需要发送命令,只是做转发。
1080是绑定的本地端口,也就是SOCKS server提供服务的端口,可以换成其他端口号。
127.0.0.1表示只能有你本机访问这个服务,去掉IP只留下端口号的话,就没有这个限制了。
PS:SSH隧道相当于在服务器的防火墙上打了个洞,可能有安全隐患,所以建议加上仅限本机访问的限制。
这里使用Windows上常用的XShell做说明。
配置用户名,密码,主机地址(通常是跳板机)等。
这里介绍Chrome浏览器+SwitchyOmega插件的方法。
SwitchyOmega是一个Chrome插件,下载安装地址:
Chrome应用商店
或者 官网下载
安装好后,找到插件图标(一个圆圈),单击图标->选项,打开配置页面。
点击侧边栏的“新建情景模式(New Profile)”,添加一个代理服务器(Proxy Profile),
配置如下图。注意端口要填写前面SSH隧道服务的端口号。
如果侧边栏中已经有一个默认的’proxy‘模式,也可以直接拿来修改。
配置好后单击SwitchyOmega的图标,切换到新建的情景模式,然后所有的浏览器请求都会以SSH隧道作为
代理了,这时你应该已经可以访问服务器上的任何web服务了。
但是!我们并不需要所有的浏览器流量都走代理哇。SwitchyOmega其实可以根据URL的规则,自动选择走不走代理。
默认已经存在的一个情景模式’auto switch‘,就是一个可以根据规则来自动选择代理服务的模式。
比如在’auto switch‘模式中配置一条规则,填写10.1.*
,并选择proxy模式。这就代表将10.1.
开头的所有请求都用proxy模式转发,而其他不满足规则的请求,将命中最后一条’默认‘规则,
进行’直接访问‘,即不使用任何代理服务。
可以让任意程序访问服务器上的服务及端口,实现如下操作:
1、配置代理服务器
2、配置规则
配置好规则后,本地应用就可以直接访问服务器的内网IP了。
比如连接数据库: