ssh端口转发
ssh端口转发
ssh端口转发提供了强大的天然安全加密通道(tunnel),甚至不需要搭建复杂的VPN,就可以凭借一台ssh服务器作为网管,自由翻墙访问资讯。
在系统维护工作中,ssh也是最为强大的工具,不仅提供了远程服务器的终端访问,而且提供了通过port forwarding
功能实现文件传输复制、远程桌面访问、以及巧妙的组合成本地编辑远程保存的工作方式。
可以通过端口转发方式实现访问本地localhost
端口通过ssh服务器转发到ssh服务器后面的内部服务器上,相当于iptables的端口转发,但是更为方便简洁。
此时,你访问本地80端口就会访问到reddit.com
的80
端口,这对于一些内网防火墙或堡垒机之后的服务器维护会非常方便。
再举个例子,gateway
是一台堡垒服务器,连接internet,后面隐藏了服务器web-1
,我需要维护web-1
这样就可以通过ssh -p 2201 localhost
直接ssh访问到web-1
系统。
通过ssh端口转发实现多跳访问
测试模拟环境中DMZ区服务器上启动了KVM虚拟机安装环境,采用VNC提供访问,VNC只监听在本机回环地址5900。在外部需要通过ssh多跳访问服务器端口
A主机执行如下指令登陆B主机:
B主机执行以下命令登陆C主机:
此时可以在主机A上通过VNC客户端访问 127.0.0.1:5900 来访问主机C上的VNC服务安装虚拟机。
验证还有问题,待测试
ssh动态端口转发
-D
参数提供了动态转发,也就是连接了服务器之后,本地localhost
会监听8123
端口,所有通过socket方式访问本地8123
端口的流量都会转发到远程服务器,通过远程服务器访问Internet。
设置操作系统网络通过socks代理
通过ssh动态端口转发
可以让firefox这样的浏览器通过socket代理自由访问internet,那么npm
是否也能这样呢?
然而npm
不支持socket代理,需要使用第三方的工具,如dsocks
(BSD/Mac OS X)或者tsocks
(Linux)
不过,在最新的MacOSX10.11无法完成编译
proxifiler提供了在Windows和Mac下的proxy client,价格比较昂贵,需要$39.95。不过,这个软件提供了1个月的试用期,临时使用也足够了。
proxifiler
非常好用,提供了每个访问代理的服务进程的监控,可以看到自己客户端每个访问连接和数据流量。此外,提供了一个规则编辑器,可以设置哪些需要代理,哪些不需要代理,确实非常方便使用。
如果简单的WEB代理方式,其实可以使用Mac OS X自己内建代理设置(在网络设置中有个Proxy设置)。但是,这个代理设置通常只有应用程序使用系统代理才能工作,例如safari浏览器就使用系统代理配置,而很多应用程序,则不会使用系统代理,例如ssh等客户端。
设置Firefox浏览器
Firefox浏览器支持通过 socks 代理访问internet,即可以通过上述ssh动态端口转发先建立加密通道。然后设置Firefox通过加密通道访问internet即可以科学上网。
不过,需要注意的是,ssh -D
构建的是socks代理,不是ssl/http/ftp
代理,所以设置Firefox的时候需要去除ssl/http/ftp
代理配置,只保留socks
代理配置,否则不能正确工作。
正确设置如下图:
参考
Last updated