问题背景
现有跳板机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
- 我使用firefox设置首选项的proxy代理,还是不行,所以才随便找了个浏览器midori。貌似firefox的附件也不能找到Proxy插件了,估计被封了
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。