问题背景

现有跳板机A和服务器B
服务器B运行则hdfs和yarn,需要用网页去访问,但开放外网端口不安全且没必要,因为大数据环境就是内部处理数据使用的,于是使用ssh端口转发来解决这个问题。而且SSH(全称 Secure Shell)是一种加密的网络协议。使用该协议的数据将被加密,如果在传输中间数据泄漏,也可以确保没有人能读取出有用信息。

而我本机操作系统是deepin,如果Window系统可以自己百度参考xshell的端口转发功能。恩,此时又体现出使用Linux做开发环境是多么的方便。

使用过程

1.跳板机A和和服务器B都不需要改任何东西,只需要确保跳板机A能够访问服务器B的服务。

2.自己电脑,本地运行ssh命令:

ssh -qTfnN -D 1080 user@A.com

user是账号,A.com是跳板机的地址。这里我做了免密钥登陆
参数说明:

-D 是启动端口转发,后面跟着端口参数,如上面的1080
-q 静默模式
-T Disable pseudo-terminal allocation. 禁止分配伪终端。
-f 表示后台用户验证
-n 重定向stdin的输出,也就是不输出信息
-N 表示不执行脚本或命令

此时启动后,会看到本机的1080端口被监听着

cherry@cherry-PC:~$ sudo netstat -tunpl|grep 1080
tcp        0      0 127.0.0.1:1080          0.0.0.0:*               LISTEN      26652/ssh           
tcp6       0      0 ::1:1080                :::*                    LISTEN      26652/ssh    

3.验证:

curl --socks5 127.0.0.1:1080 http://B.com:50070

http://B.com:50070是服务器B运行的HDFS

B.com这个域名,是由跳板机A来做DNS,所以由A服务器来确定B.com所对应的ip,可以是万维网,也可以是在A服务器的/etc/hosts。

4.本地设置代理,我这里用了midori浏览器,点击midori的Menu->Preferences -> Network的界面,设置如下;
ProxyServer = HTTP proxy server
URI = socks5://127.0.0.1
Port = 1080

这样就可以在浏览器访问http://B.com:50070

5.midori还是有点卡,所以我转战至opera,安装后,启动代理命令如下

opera --proxy-server="socks://127.0.0.1:1080"

at last:
有个大胆的想法,既然ssh可以转发端口,那么访问谷歌....恩,这端口转发的用处真不小~~

TroubleShoot

  1. 我使用firefox设置首选项的proxy代理,还是不行,所以才随便找了个浏览器midori。貌似firefox的附件也不能找到Proxy插件了,估计被封了

电脑杂技集团
208 声望32 粉丝

这家伙好像很懂计算机~