为什么需要运行一个socks5代理服务器
比如在免费wifi的地方上网,通过这个代理服务器连接出去的所有数据都是经过加密的,像用户名密码就不会在网络上明文传输,数据安全性会更有保障。也可用此方法访问google搜索引擎或者是facebook网站。
原理简单说明
利用ssh命令在本地1080端口运行一个socks5服务,本地网络所有数据经过socks5代理加密之后,先通过ssh隧道,将数据传递到远程运行sshd服务的服务器上,然后再由此服务器发送请求到真正的目标网站,目标网站返回数据给此运行sshd服务的服务器,由ssh隧道返回给socks5代理,最后回到客户端。
建立socks5代理服务器的命令
当然这里需要有一台你信任的并运行sshd的远程服务器,假设ssh用户名为ssh-user,服务器ip地址为ssh-server-ip,运行如下命令即可。
ssh -D 1080 -f -C -q -N -p 22 ssh-user@ssh-server-ip |
如果要提供给局域网使用,则使用参数-D HOST:PORT格式:
ssh -D 192.168.31.101:1080 -f -C -q -N -p 22 ssh-user@ssh-server-ip |
socks5代理服务器使用
本地socks5代理服务建立之后,还需要进行相应设置才能起作用。
在Mac OS X上依次打开Network => Advanced... => Proxies => SOCKS Proxy,配置地址为localhost:1080即可。
如果只是想为chrome浏览器单独配置socks5代理的话,可使用chrome浏览器的一个插件:SwitchyOmega,安装之后新建一个配置,使用socks5代理,服务器和端口配置为localhost:1080即可。
最后可以访问这个url确认socks5代理是否生效,如果配置正确的话,这里显示的就是运行sshd的服务器ip地址。
使用SSH隧道连接MYSQL
假设localhost是一台linux,则可以在该机器上执行如下命令,建立一个SSH隧道:
ssh -fCPN –L 3307:remote-mysql-server:3306 ssh-user@ssh-server-ip |
命令说明:
执行上面的shell语句,会在本地打开一个ssh的守护进程,该进程会监听本地的3307端口,这个端口为隧道的入口,当访问本地的3307端口时,数据包会通过ssh进程,经由ssh-server-ip发送到最终的mysql服务器地址remote-mysql-server的3306端口,通过ssh隧道使用localhost机器可以访问无法远程直接连接的数据库实例。
参数解释
-C 使用压缩功能,是可选的,加快速度。
-P 用一个非特权端口进行出去的连接。
-f 一旦SSH完成认证并建立port forwarding,则转入后台运行。
-N 不执行远程命令,该参数在只打开转发端口时很有用(V2版本SSH支持)。