介绍
有时候,您的网络不安全或者防火墙过于严格,需要访问网站。 你想确保中间没有人在看交通。
一个解决方案是一个VPN ,但很多的VPN需要你的机器,你可能没有权限来安装特殊的客户端软件。
如果你需要安全的是你的网络浏览,有一个简单的替代:SOCKS 5代理隧道。
SOCKS代理基本上是一个SSH隧道,其中特定应用程序将其流量沿着隧道转发到服务器,然后在服务器端,代理将流量转发到一般Internet。 与VPN不同,SOCKS代理必须在客户端机器上逐个应用程序配置,但可以在没有任何专用客户端代理的情况下进行设置。
只要你有一个Droplet与SSH访问,你可以使用它作为SOCKS代理端点。 在本教程中,我们将使用Ubuntu 14.04 Droplet作为代理,并使用Firefox Web浏览器作为客户端应用程序。 在本教程结束时,您应该能够通过隧道安全地浏览网站。
先决条件
正如上面提到的,首先需要的是运行Linux的任何版本,如Ubuntu 14.04服务器,用SSH访问 。
- 部署服务器(本示例使用Ubuntu 14.04)
在您自己的本地机器上需要进行一些更多的设置。 为此,您需要下载一个或两个软件。
Firefox允许您仅为Firefox设置代理,而不是设置系统范围的代理。
PuTTY用于为Windows用户设置代理隧道。 Mac OS X或Linux的用户具有设置预安装的隧道的工具。
第1步(Mac OS X / Linux) - 设置隧道
在本地计算机上,创建一个 。 如果您已有SSH密钥,则可以使用该密钥。
虽然最好给你的SSH密钥一个密码短语,但在本教程中,我们实际上将密码保留为空,以避免以后出现问题。
当您设置键,确保将其添加到授权密钥服务器上的用户Sudo(在这个例子中,这就是sammy用户)。
在计算机上打开终端程序。 在Mac OS X上,这是应用程序>实用程序中的终端。
使用此命令设置隧道:
ssh -D 8123 -f -C -q -N sammy@example.com
参数说明
-
-D
:告诉我们要在指定的端口号的SOCKS隧道SSH(你可以选择1025-65536之间的数字) -
-f
:福克斯的过程为背景 -
-C
:发送之前对数据进行压缩 -
-q
:使用安静模式 -
-N
:告诉SSH,一旦隧道使用没有命令将被发送
一定要取代sammy @ example.com
用自己的Sudo用户和服务器的IP地址或域名。
一旦输入命令,您将立即被带到命令提示符,没有成功或失败的迹象; 这是正常的。
使用此命令验证隧道是否已启动并运行:
ps aux | grep ssh
您应该在输出中看到一行:
sammy 14345 0.0 0.0 2462228 452 ?? Ss 6:43AM 0:00.00 ssh -D 8123 -f -C -q -N sammy@example.com
您可以退出您的终端应用程序,隧道将保持。 那是因为我们使用了-f
里面放SSH会话到背景的说法。
注意:如果你想终止隧道你必须通过抢PID ps
和使用kill
命令,我们会告诉你以后怎么办。
第1步(Windows) - 设置隧道
打开PuTTY 。
如果您尚未安装它,请下载PuTTY并将其保存在您喜欢的位置。 PuTTY不需要管理员权限即可安装; 只需下载.exe
并运行它。
完成以下步骤设置隧道:
- 从会话部分中,添加主机名(或IP地址)的服务器,而SSH 端口 (通常是 22)
- 在左边,浏览到: 连接> SSH>隧道
- 输入1025-65536之间的任何源端口号。 在这个例子中,我们使用1337端口
- 选择Dynamic单选按钮
- 点击添加按钮
- 回到会议左边
- 在保存会话添加一个名称,然后点击保存按钮
- 现在,单击打开按钮进行连接
- 输入您的sudo用户名和服务器密码以登录
您现在可以最小化PuTTY窗口,但不要关闭它。 您的SSH连接应该是打开的。
提示:您可以通过以下保存你的sudo用户名( 森美 )和SSH密钥此相同的会话PuTTYSSH密钥的说明 。 然后,您不必在每次打开连接时都输入用户名和密码。
第2步 - 配置Firefox使用隧道
现在你有一个SSH隧道,是时候配置Firefox使用该隧道。 记住,对于SOCKS 5隧道工作,您必须使用可以利用隧道的本地应用程序; Firefox做的伎俩。
此步骤对于Windows,Mac OS X和Linux是相同的。
请确保您有您在SSH命令或PuTTY用这个例子说明的端口号 。 我们已经在OS X / Linux的例子在Windows示例中使用8123,1337和到目前为止,或者你可能使用不同的端口。
(以下步骤使用Firefox版本39执行,但应该在其他版本上工作,但选项的位置可能不同。)
- 在右上角,点击汉堡包图标访问Firefox的菜单:
- 点击首或选项图标
- 导航到高级部分
- 单击网络选项卡上
- 点击连接标题下的设置按钮。 将打开一个新窗口
- 选择手动配置代理的单选按钮:
- 输入localhost的SOCKS主机
- 从你的SSH连接输入相同的端口号; 在图像中可以看到我们已经进入了1337年到匹配Windows的说明
- 单击确定按钮保存并关闭您的配置
现在,在Firefox中打开另一个选项卡并开始浏览网络! 您应该设置为通过您的SSH隧道安全浏览。
可选:要确认您使用的是代理,回去在Firefox中的网络设置。 尝试输入其他端口号。 点击确定保存设置。 现在,如果您尝试浏览网页,你应该得到一个错误信息代理服务器拒绝连接 。 这证明Firefox正在使用代理,而不只是默认连接。 恢复到正确的端口号,您应该能够再次浏览。
在Firefox中恢复正常的不安全浏览:
当您完成需要的SSH隧道的隐私,回去在Firefox 网络代理服务器设置( 首选项>高级>网络>设置 )。
点击关于使用系统代理设置的单选按钮,然后单击确定 。 Firefox现在将浏览您的正常连接设置,这可能是不安全的。
如果你使用隧道,你必须终止隧道,我们将在下一节中介绍。
如果您计划经常使用隧道,可以将其保留以供以后使用,但请注意,如果空闲时间过长,或计算机进入睡眠或关机状态,它可能会自行终止。
第3步(Mac OS X / Linux) - 关闭隧道
关闭隧道将阻止Firefox浏览代理的能力。
我们之前在本地机器上创建的隧道已发送到后台,因此关闭用于打开隧道的终端窗口将不会终止它。
要终止,我们需要确定使用进程ID(PID)隧道ps
命令,然后用杀死它kill
命令。
让我们来搜索所有活跃的ssh
我们的机器上的进程:
ps aux |grep ssh
查找看起来像您之前输入的命令的行以创建隧道。 下面是一些示例输出:
sammy 14345 0.0 0.0 2462228 452 ?? Ss 6:43AM 0:00.00 ssh -D 8123 -f -C -q -N sammy@example.com
从行的开始,在前两列之一,是3-5位数字。 这是PID。 以上,14345样品PID被突出显示。
现在你知道了PID是什么,你可以使用kill
命令使隧道下来。 当你杀死进程时使用你自己的PID。
sudo kill 14345
现在,如果您想自动完成连接过程,请转到第4步。
第3步(Windows) - 关闭隧道
关闭隧道将阻止Firefox浏览代理的能力。
关闭用于创建隧道的PuTTY窗口。 而已!
在Windows中,没有一种简单的方法来自动化连接过程,但PuTTY和Firefox都可以保存您之前输入的设置,因此只需再次打开连接即可重新使用隧道。
第4步(Mac OS X / Linux) - 创建重复使用的快捷方式
对于OS X或Linux系统,我们可以创建别名或创建脚本以快速为我们创建隧道。 以下是自动化隧道进程的两种方法。
注意:这些快捷方法都需要对服务器进行无密码/无密码SSH密钥身份验证!
可点击的BASH脚本
如果你想要一个图标双击,隧道刚刚启动,我们可以创建一个简单的BASH脚本来做这项工作。
我们使脚本设置隧道并启动Firefox,但是您仍然需要在Firefox中手动添加代理设置。
在OS X中 ,Firefox的二进制文件,我们可以在命令行启动里面Firefox.app
。 假设应用程序是应用程序文件夹中,二进制文件将被发现在/Applications/Firefox.app/Contents/MacOS/firefox
。
在Linux系统上 ,如果通过回购安装火狐或者是预装的,那么它的位置应该是/usr/bin/firefox
。 您可以随时使用which firefox
命令来找出它是你的系统上。
在下面的脚本中,使用适合您的系统的路径替换Firefox的路径。
使用诸如文本编辑器nano
创建一个新的文件:
nano ~/socks5.sh
添加以下行:
#!/bin/bash
ssh -D 8123 -f -C -q -N sammy@example.com
/Applications/Firefox.app/Contents/MacOS/firefox &
- 替换
8123
与您所需的端口号(它应该符合你放什么在Firefox) - 替换
sammy@example.com
与SSH用户和主机名或IP - 更换
/Applications/Firefox.app/Contents/MacOS/firefox
的路径Firefox的二进制
保存脚本。 对于纳米,键入CONTROL + o
,然后退出,类型CONTROL + x
。
使脚本可执行,以便当您双击它时,它将执行。 从命令行输入此命令以添加执行权限,使用您自己的脚本路径:
chmod +x /path/to/socks5.sh
在OS X中,您可能需要执行额外的步骤,告诉Mac OS X的一个.sh
文件应该像一个程序执行,并在编辑器中无法打开。
要做到这一点,右击你的socks5.sh
文件并选择获取信息 。
找到打开的部分:如果三角形是不是指向下方,点击它,所以你可以看到下拉菜单。 Xcode可能被设置为默认应用程序。
将其更改为Terminal.app。 如果未列出Terminal.app,选择其他 ,然后导航到应用程序>工具> Terminal.app。
现在打开你的SOCKS代理,就只要双击socks.sh
文件。
(执行后,脚本不会提示输入密码,因此如果您之前将SSH密钥设置为需要密码,则该密码将无提示失败。)
该脚本将打开一个终端窗口,启动SSH连接,并启动Firefox。 随意关闭终端窗口。 只要您在Firefox中保留代理设置,即可开始浏览安全连接。
命令行别名
如果你发现自己经常在命令行上并想要启动隧道,您可以创建一个BASH别名为您完成这项工作。
创建别名的最难的部分是找出保存alias命令的位置。
不同的Linux发行版和OS X发行版在不同的地方保存别名。 最好的办法是寻找下列文件中的一个,搜索alias
,看看目前被保存等别名。 可能性包括
-
~/.bashrc
-
~/.bash_aliases
-
~/.bash_profile
-
~/.profile
找到正确的文件后,请在已有的别名下面添加别名,或者只在文件末尾添加。
alias socks5='ssh -D 8123 -f -C -q -N sammy@example.com && /Applications/Firefox.app/Contents/MacOS/firefox &'
- 替换
8123
与您所需的端口号(它应该符合你放什么在Firefox) - 替换
sammy@example.com
与SSH用户和主机名或IP - 更换
/Applications/Firefox.app/Contents/MacOS/firefox
的路径Firefox的二进制
您的别名仅在您启动新shell时加载,因此关闭终端会话并启动一个新会话。
现在,当您键入:
socks5
此别名设置您的隧道,然后为您启动Firefox并返回到命令提示符。
确保Firefox仍然设置为使用代理。 您现在可以安全地浏览!
第5步(可选) - 故障排除:穿过防火墙
如果你的连接是工作,你是好去,可以停止阅读。
但是,如果您发现由于限制性防火墙而无法建立SSH连接,则可能是创建通道所需的端口22正在被阻止。
如果您可以控制代理服务器的SSH设置(通过超级用户访问DigitalOcean Droplet,您可以执行此操作),您可以将SSH设置为在除22之外的端口上侦听。
你可以使用哪个端口没有被阻止?
除了像一个工具,运行端口扫描的可疑计划ShieldsUP! (有问题的,因为你的本地网络可能会认为这是一个攻击),这是最好的尝试通常留下开放的端口。
端口是常开80包含(一般的网络流量)和443(SSL的Web流量)。
如果您的SSH服务器不提供Web内容,我们可以告诉SSH使用这些Web端口中的一个,而不是默认的端口22。443是最好的选择,因为它的预期已经加密此端口上的流量过沟通,我们的SSH流量将被加密。
从非防火墙位置,SSH到您使用的代理的DigitalOcean Droplet。 (或者使用内置的控制台从控制面板中,但您可能不希望如果你害怕你的网站流量被监视做到这一点。)
编辑服务器的SSH设置:
sudo nano /etc/ssh/sshd_config
寻找线路Port 22
。
我们可以替换22
完全(这是一个很好的SSH加固技术无论如何),或添加第二个端口,用于SSH上侦听。
我们将选择有多个端口SSH听,所以我们下添加一个新行Port 22
,读取Port 443
下面是一个例子:
. . .
Port 22
Port 443
. . .
重新启动SSH,以便重新加载刚刚编辑的SSH配置。
根据您的分布,SSH服务器守护程序的名称可能不同,但它很可能是ssh
或sshd
。 如果一个不工作尝试另一个。
sudo service ssh restart
要验证您的新SSH端口是否正常工作,请打开一个新的shell(不要关闭当前的端口,以防意外锁定自己)和SSH使用新端口。
ssh sammy@example.com -p 443
如果成功,您现在可以注销两个shell并使用新端口打开SSH隧道。
ssh -D 8123 -f -C -q -N sammy@example.com -p 443
而已! Firefox的设置将是完全一样的,因为他们不依赖于SSH端口上,就在隧道端口(8123以上)。
结论
打开一个SOCKS 5隧道,浏览一个安全的SSH隧道,每当你需要一个轻量级的方式来访问网络安全从窥探。