如何使用SSH设置代理

首先我们来了解一下什么是SSH.

SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。 SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。

1、正向连接 – 端口转发

例如:当前机器A,SSH服务端B,目标服务器C,他们三者之间的关系是A可以SSH访问到B,B可以直接访问C,要达到的效果就A通过SSH端口转发直接访问服务器C.

例如:A为自己在家里的电脑,B为公司提供外网可以SSH访问的服务器B,C为内网服务器.B可以访问内网中的服务器C. 通过以下命令可以实现端口映射,通过SSH服务器将本地端口映射到服务器C对应的端口上,从而实现在本地A直接访问C的目的.

在Client机器A执行如下命令:

ssh -L [本地IP可省略:][本地端口]:[服务器C地址]:[服务器C端口] [SSH服务器IP] -p [非默认端口22]

如果使用的是默认SSH端口22 ,则”-p 端口”不用输入.

ssh -L 8001:10.0.0.1:8001 username@115.13.13.1 -p 2200

这样在访问本机的8001端口,通过SSH服务器B端口转发后,实际访问的就是服务器C的8001端口.

2、反向连接 – 端口转发

就是将Client的端口镜像到SSH服务器上,所有可以访问SSH服务器的访问SSH镜像的端口时即是访问Client的端口.

ssh -R [SSH服务器IP:][SSH服务器上端口]:[客户端侧IP或能访问到的IP]:[客户端侧IP端口或能反问的IP的端口] 用户名@SSH服务器IP -p SSH服务器端口

如果SSH服务器使用的为默认22端口,则后面的”-p SSH服务器端口”不用输入

ssh -R 115.13.13.1 8080:127.0.0.1:8001 username@115.13.13.1 -p 2200

3、socket代理

ssh服务器可以访问外网,能访问google,facebook等站点,client可以访问ssh服务器但是不能访问google,facebook.如果希望client通过ssh服务器代理访问google,facebook通过以下命令可以实现.

ssh -D 8081 username@SSH服务器IP -p SSH服务器端口

本地浏览器上设置socket代理后,浏览器即可访问google,facebook站点了.

要点2:确保SSH服务器的/etc/ssh/sshd_config配置文件的AllowTcpForwarding和GatewayPorts均配置为yes

  1. AllowTcpForwarding:yes 顾名思义是允许sshd进程转发tcp数据包
  2. GateWayPorts: yes 是确保公网ssh服务器的所有网卡都监听17780端口