飞道的博客

一条通往服务器所有端口的隧道

350人阅读  评论(0)

应用场景

通常为了安全,服务器需要通过跳板机访问,服务器对外网暴露的端口也严格限制。这种情况下若要在本地
访问服务器上的服务或系统就会比较蛋疼。
有一个简单的解决方案,就是在本地和跳板机之间建立SSH隧道。SSH隧道提供了一个网络代理服务,
通过该代理服务可以直接访问跳板机所在的局域网,即服务器上的任意端口,服务都可以直接访问。

本文介绍的方法比一般的端口映射更方便,不需要为每个端口配置一条SSH隧道,包括Windows、Mac、Linux上的操作方法。

SSH隧道建立

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版

这里使用Windows上常用的XShell做说明。

1.配置常规的SSH连接

配置用户名,密码,主机地址(通常是跳板机)等。

2.添加隧道

 

3.其他

 

 

SSH隧道使用

让浏览器访问内网服务

这里介绍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模式转发,而其他不满足规则的请求,将命中最后一条’默认‘规则,
进行’直接访问‘,即不使用任何代理服务。

与Proxifier配合使用

可以让任意程序访问服务器上的服务及端口,实现如下操作:

  • 使用客户端(如Navicat)访问服务上的数据库(如没有对公网暴露的MySQL);
  • 让本地运行的代码访问服务器内网服务,比如HDFS,Hive,Hbase,ES等等。(对于大数据开发非常实用,
    可以愉快的打断点调试Spark应用)

配置方法

1、配置代理服务器

 

 

2、配置规则

 

 

3 使用说明

配置好规则后,本地应用就可以直接访问服务器的内网IP了。

比如连接数据库:

 


转载:https://blog.csdn.net/weixin_39997829/article/details/125517493
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场