SSH服务器的建立与SSH代理使用教程

其实在HTTP和FTP相继稳定在apache与gene6之后,我一直想找一款好用的SSH服务端软件。
可是我找了好久,就是没发现一款好用的:

OpenSSHd:
OpenSSHd的弊端就是整个架构建立在Cygwin之上。
熟悉的人或许知道,Cygwin实际上是在Windows下用Win的api建立一个拟Linux的环境。
可是它实在太重,太让人不爽,以至于我甚至会跑去选择MinGw,当年编译FileZilla玩的时候用过。
然而更糟的是,拟Linux环境的兼容性问题层出不穷,尤其在我从XP迁移至Win7的那段时期。
或许达人们喜欢在Win下搞些Linux的开发,但是我这种小白实在不适合那么高深的玩意。
-_-感觉说跑题了,总之,OpenSSHd因为它的笨重被我扔了。

FreeSSHd:
这东西非常精简,一共就那么几个文件,那么几个配置项,操作起来很容易上手。
而且麻雀虽小五脏俱全,User的登入配置条理分明,SFTP/Shell/Tunnel的权限配置清清楚楚。
基本上已经满足人的稳定使用这一大前提了,不过精简到极致也是罪啊!!
它唯一让我不满的是log系统太精简了,全在一个文件里,没有一点儿智能化感觉。
至少能按日期分个块就好了-Λ-

WinSSHd:
在无语地抛弃了OpenSSHd与FreeSSHd之后,我终于发现了俺想要的东西——WinSSHd
这东西比freeSSHd多了很多功能,不过大多不被我需要……
比如Windows Accounts,远没有更加基本的Virtual Accounts来得好用。
然而WinSSHd的log与Activity显示让我非常满意,做服务器端的,没有统计怎么行呢?
有一个让我不爽的就是WinSSHd老是弹信息窗口,而大多数时候我根本不关心谁连接上了,谁连接不上。
这只要把Activity标签下的popup notifications:这一项改成Never就好了。
这下总算是完美了……

————————————————我是分割线————————————————

讨论完了Server端,接下来讨论一下Client端的SSH软件
注:本文讨论纯SSH客户端,各种X Server(比如Xmanager与Exceed),不在本文讨论范围内。

Plink:
应该属于老牌的SSH 客户端了,类似Linux下的ssh命令,完全命令行式的软件。
嘛~如果我还在用字符界面的Debian或许我会喜欢这种,不过真正用起来的时候每次还得输入命令实在不爽。

PuTTY:
应该也算老牌软件了,比Plink相比在登录前多了个配置界面,各种配置都非常详细。
不过我感觉,它的配置项的分布不是那么清楚。对于新手来说,需要掌握的配置信息有点多。
PuTTY的大部分配置都是针对Shell的,包括什么字体背景以及各种X窗口的转发。
PuTTY支持Tunnel功能,可以利用SSH链接建立代理服务器,似乎国内很多SSH代理的教程都是基于PuTTY的。
但至今我也不会用PuTTY打开SFTP链接,甚至不知道PuTTY本身是否支持_

Bitvise Tunnelier:
说到重点了,这个客户端跟上面的winSSHd是一个公司的产品。
各种参数配置只面向功能,你可以很容易地按照Terminal、SFTP、Services标签来寻找需要的配置项,
我很喜欢这个设计。下方广阔区域的log面板也让人感觉舒服,用FTP客户端的时候难道不是经常看log信息的么?
SSH客户端也应该有这样一个区域才对。更好的是它可以自动重连,这让人可以更加稳定的享受SSH代理带来的乐趣。
不过这玩意也有弊端,它的Shell配置和PuTTY相比少得可怜,
比如我很喜欢使用“淡黄背景色+黑字”的Shell,这东西就没办法配置出来,只能是一个很难看的dos框——黑底白字

————————————————我是分割线II————————————————

或许接下来才是你感兴趣的东西,这是这篇文章的主题——利用SSH当代理服务器,以及,翻墙!!

SSH代理是通过SSH链接以及Tunnel服务构建本地代理的一种方法。
首先说点准备知识:
其一,SSH代理是建立在本地的,即使你本身上网需要走代理(比如www-proxy.waseda.jp),你照样可以利用SSH代理突破你的网络限制!
其二,你必须拥有一个远程地址的SSH登入权限,通常来讲,可以利用一些网上的虚拟主机来获取或者自己建立SSH服务器。
其三,你SSH的host地址必须处在公网内,否则已然无法突破网络限制(比如你想利用一台同样网络受限的SSH主机来翻墙,那是不可能的)。具体来说,如果你想从中国GFW内部翻出来,你必须有个中国GFW外部的host地址;如果你想从中国GFW外部翻进去,你必须有一个中国GFW内部的host地址。

1.首先下载Bitvise Tunnelier并安装。

2.运行并且开始填参数。
login标签下:
  Host:你拥有的SSH代理的地址
  Port:22(22是SSH服务的默认端口,如果有些SSH服务器工作在别的端口下,请以你拥有的SSH代理的端口为准)
Options标签下:
  On Login 框组,Open Terminal和Open SFTP的勾去掉。
Services标签下:
  Socks/HTTP Proxy Forwarding 框组,Enable的勾勾上
  Listen Interface:127.0.0.1
  Listen Port:任选,比如1080

3.SSH登入并保存Profile:
  按下面的login按钮,如果登入成功,会显示如下字样,这时候可以按左边的Save Profile As按钮来保存一个Profile。
  22:28:33.784 Attempting ‘password’ authentication.
  22:28:33.843 Authentication completed.
  22:28:33.843 Initializing SOCKS / HTTP CONNECT proxy on 127.0.0.1:1080 succeeded.

4.配置你的应用程序调用本地代理
  在你的浏览器或者QQ等软件中使用如下本地代理:地址127.0.0.1,端口1080,类型Socks5
  另外需要注意的是IE对Socks5的支持很不好,并且默认调用HTTP代理,如果坚持使用IE浏览器,请自行解决这一问题。
  正常使用的话,log应该是这样的:
  22:36:52.142 Accepted SOCKS5 connection from 127.0.0.1:52100 to www.google.com.hk:80.
  22:36:52.398 Accepted SOCKS5 connection from 127.0.0.1:52102 to www.google.com.hk:80.
  22:36:52.465 Accepted SOCKS5 connection from 127.0.0.1:52104 to www.google.com.hk:80.

如果你看完了以上那些,突然想破口大骂:“该死的作者!说了半天废话不说关键的Host地址,真是浪费我精力。”
好吧,现在俺把自己建的SSH地址公布一下(日本IP,国内翻出用):
  地址同本blog的域名,用户名是proxy,密码是在用户名前面加个小写英文字母j(已失效,人回国了)