这篇文章的所有版本: English | فارسى | русский | عربي | Español | Burmese | Tiếng Việt

SSH隧道加密技术

SSH,即安全外壳(Secure Shell),是一种标准协议,可对您的计算机和服务器之间的通信内容进行加密。该加密技术可以防止通信内容被网络运营商查看或修改。SSH可广泛应用于安全通信应用,最常见的就是安全登录服务器,以及安全文件转移(安全复制,SCP或安全文件传输协议,SFTP)。

SSH尤其适用于绕开网络审查,因为它可以提供加密隧道,充当一个通用代理客户端。审查者不能完全屏蔽SSH,因为它不仅仅用来绕开网络审查;比如系统管理员也会使用SSH通过网络管理服务器。

使用SSH时需要一个服务器上的账户,通常使用Unix或Linux服务器。为了绕开审查,该服务器需要能自由访问网络,并且提供者最好是信得过的人。有些公司也销售服务器账户,并且很多网络虚拟主机服务可以提供SSH访问。您可以在这里找到一个外壳账户提供商名单:http://www.google.com/Top/Computers/Internet/Access_Providers/Unix_Shell_Providers/,每个账户每月收费2-10美元。

大部分Unix,Linux,和Mac OS计算机上已经预装了一个叫做OpenSSH的SSH程序,作为一个命令行程序,从终端计算机上输入“ssh”就可以运行。Windows用户也可以使用一个叫做PuTTY的免费SSH工具。

所有新版SSH都支持创建防火墙安全会话转换协议(SOCKS)代理,允许网页浏览器和很多其它软件通过加密SSH链接使用未经屏蔽的网络。在本例中,我们仅讨论SSH的这种应用。下列步骤将告诉您如何通过一个叫做accountname@example.com的外壳账户,在计算机的本地1080端口上设置一个SOCKS代理。 

Linux/Unix以及MacOS命令行(以OpenSSH为例)

您可以从http://www.openssh.com/得到OpenSSH,但一般Linux/Unix和Mac OS计算机上会预装该程序。您需要一个服务器账户,并且该服务器可以自由访问网络。

resized_640x218_ssh_1.png 

您将运行的ssh指令包含一个本地端口号(通常为1080),一个服务器名,以及一个用户名(账户名)。如下所示:

ssh -D localportnumber accountname@servername

然后会提示您输入密码,接着您就可以登录到服务器。通过使用-D选项,您可以建立一个本地SOCKS代理,只要您的计算机连接在服务器上,该代理就不会消失。现在您就可以验证主机密钥、设置您的程序了。

Windows图形用户界面(以PuTTY为例)  

您可以从http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html下载到PuTTY。您可以把putty.exe程序保存到您的硬盘上,以备将来使用,或者您也可以直接从网站上运行该程序(通常,您可以在共用或公共的计算机上实现,比如图书馆或者网吧里的计算机)。

启动PuTTY后,您可以看到一个配置对话框。首先,您要输入打算访问的SSH服务器的主机名(地址)。如果您只知道IP地址,或者DNS屏蔽让您无法使用主机名,您可以用IP地址代替。如果您需要经常进行此操作,您可以选择创建一个PuTTY档案,这样就可以保存这些选项及后续选项以便将来使用。

PuTTY_config_1.jpg

接下来,在目录(Category)列表选择连接(Connection)--> SSH,然后选择隧道(Tunnels)。

在源端口(Source port)后输入1080,然后选中“动态(Dynamic)”和“Ipv4”选项框。

PuTTY_config_2.jpg

现在点击添加(Add)按钮,接着点击“打开(Open)”按钮。之后会建立一个到服务器的连接,然后会弹出一个窗口,提示您输入用户名(username)和密码(password)。

putty_connection1.jpg 

输入这些信息后您就可以登录到服务器,然后会收到一条来自服务器的命令行提示。这样就建立了SOCKS代理。

accountname_example_com_____2008_11_12__23_51_32_1.jpg

主机密钥验证

当您第一次连接到服务器时,会提示您确认该服务器的主机密钥指纹(host key fingerprint)。主机密钥指纹是一长串可以安全识别特定服务器的字母和数字(十六进制),比如:57:ff:c9:60:10:17:67:bc:5c:00:85:37:20:95:36:dd。

检查主机密钥指纹是一项安全措施,可以确保您是在和您想要连接的服务器进行通信,并且加密后的连接无法破解。(SSH没有提供自动验证方法。为了享用该安全机制带来的好处,您应该和服务器提供者一起核对主机密钥指纹,或者让一个信得过的人连接同一台服务器,看其是否可以看到同样的指纹。)

如果您想确保让SSH保护您的通信内容不被窃听,验证主机密钥指纹就很有必要;但如果您只想绕开审查,而不在乎网络运营商时候可以看到您的通信内容,则没有必要验证指纹。

配置程序,使用代理

只要您不关闭SSH程序,通过以上步骤建立的代理会一直有效。但如果您的网络连接被中断了,您需要重复上面的步骤,重新激活代理。

启动并运行代理之后,您需要设置软件以使用代理。通过以上步骤,您得到的是一个位于本地主机(localhost)的SOCKS代理,端口为1080(也即127.0.0.1,端口1080)。您应该确保软件设置可以阻止DNS泄漏,否则SSH的隐私保护和审查绕行效果可能会受到影响。

READ & DOWNLOAD the manual in other languages >>

  • HOW TO BYPASS INTERNET CENSORSHIP by FLOSS Manuals Community Members

    Inform yourself on how Internet censorship works and how to route around it with free software. Includes an excellent overview of the techniques and tools for beginners and advanced users.
    Paperback book: €11.53,

    available on Lulu.com
  • HOW TO BYPASS INTERNET CENSORSHIP - supplement for proprietary software by Sesawe

    Paperback book: €5.05,

    available on Lulu.com