利用Putty通过ssh端口转发实现FireFox和MSN加密代理访问

http://www.chedong.com/blog/archives/001246.html
参考原文:http://thinkhole.org/wp/2006/05/10/howto-secure-firefox-and-im-with-putty/

加密传输的机制如下:

/ foo.com

浏览器 <==secure tunnel==>ssh server – bar.com

example.com

浏览器先通过加密通道链接到一台服务器上,然后通过这个服务器再访问整个互联网。主要的用途就是这个绕道访问。具体你需要通过加密通道绕过谁? 谁用谁知道……
具体配置过程:
SSH登录工具Putty的登录设置中配置tunnel,目标设置为Dynamic,添加一个端口7070,再按Add,一个动态转发端口就实现了;

然后用相应帐号ssh登录后:除了登录的终端窗口意外,本地的7070连服务器的22端口之间就有了一个SSH加密的转发通道了。

为了方便切换,可以使用FireFox的SwitchProxy tool插件,设置socks代理通过本地的127.0.0.1:7070 进行传输。

MSN的机制类似:就是在连接配置中设置sock5 加密代理。

附:
获得国外的SSH帐号或者有Dreamhost虚拟主机的可以增加ssh用户:都可以用类似机制进行加密访问。

感谢number5:
更简单方便的setup方式是使用 putty的后台命令行程序plink
plink -N username@remote.ssh.server -D 127.0.0.1:7070
其中 -N 表示不需要shell
username@remote.ssh.server 换成你ssh帐户名和主机域名或者地址
或者替换成 -load sessionname 也可以,用dreamhost上的帐号试了一下,真的很快
如何在Windows下使用密钥方式登录Linux服务器:
如果设置需要基于密钥的登录(如果不设置密钥密码,就可以自动登录了),
我没有试成使用puttygen生成的密钥(公钥/私钥)直接部署在Linux服务器上。目前成功的方法是:先在服务器上用服务器上用./ssh-keygen生成密钥对,将公钥 id_rsa.pub >> 部署到要登录到的服务器上:/home/username/.ssh/authorized_keys 中,密钥在Windows客户端下使用:将密钥 id_rsa下载到本地,然后用puttygen导入id_rsa 另存转换为putty格式的密钥id_rsa.ppk即可。然后使用 plink -i c:pathtoid_rsa.ppk username@example.com方式登录。

注意:
加密通道和网站是否提供https没有直接的关系,https是指服务商直接向客户提供的加密,例如:GMail: https://mail.google.com/mail/, GReader: https://www.google.com/reader/view/,从ssh server到服务网站之间仍然是明文的http传输;
加密通道和匿名不匿名访问网站也没有直接关系。
ssh_tunnelling

捐献1$,获得国外主机登录帐号:SilenceIsDefeat.org
Che Dong (2006年11月25日 18:37) | 评论(5) | 引用通告(2)
http://silenceisdefeat.org/ 是一个非营利组织(创建于2000年):支持言论自由的公共Unix主机系统, 捐献(基于PayPal: 最高50$)后可以获得一个Unix系统帐号。 目前帐号包括:50MB用户空间, http访问(http://silenceisdefeat.org/~username), ssh, sftp, imap-ssl mail, pop3-ssl mail. 加密的即时通讯端口:IRC, AIM, MSN, ICQ, Yahoo!,Jabber, and Lily. P2P BitTorrent 客户端! 而且包括服务器端的SPAM检查。此外还有几个 为IRC的频道。 支持了一把:获得的帐号信息如下服务器一台P4 2G + 1G内存,操作系统是OpenBSD,web服务支持PHP http://silenceisdefeat.org/~chedong/ 登录上去到home看了一下:目前共有 4595个用户目录。
从国内服务器的路由情况:
My traceroute [v0.71]
chedong (0.0.0.0) Sat Nov 25 16:18:27 2006
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. 60.195.249.1 0.7% 304 21.3 17.6 0.5 128.1 10.9
2. 202.99.57.129 3.0% 304 19.8 16.7 0.3 25.6 6.6
3. 202.99.57.253 1.3% 304 20.1 29.2 0.7 215.0 38.6
4. 221.4.0.5 1.3% 304 53.4 51.5 35.0 59.8 6.4
5. 221.4.4.225 2.6% 304 66.4 69.7 45.9 214.0 26.9
6. 221.4.0.9 2.0% 304 63.0 70.7 42.6 272.0 39.7
7. 219.158.10.137 2.6% 304 63.4 62.1 42.1 247.2 20.6
8. 219.158.4.53 2.0% 304 90.2 91.0 68.8 287.4 26.7
9. 219.158.3.30 2.6% 304 91.9 85.0 68.8 92.7 6.5
10. 160.81.7.81 0.3% 304 256.0 253.0 235.0 269.1 6.0
11. 144.232.4.245 2.6% 304 264.6 265.1 237.1 441.4 24.7
12. 144.232.20.181 2.6% 303 257.7 267.9 236.7 462.0 41.3
13. 144.232.3.218 2.6% 303 259.2 268.3 237.3 474.7 41.7
14. 144.232.9.240 1.6% 303 264.4 265.5 237.9 434.9 26.3
15. so2-0-0-2488M.ar1.SJC2.gblx.net 6.9% 303 357.9 353.4 333.1 484.3 19.7
16. so0-0-0-2488M.ar2.TPA1.gblx.net 8.2% 303 405.1 402.4 384.0 471.6 12.2
17. Lightspeed-IP-Inc-Triple-8-Tampa 7.3% 303 666.4 662.9 645.1 677.5 6.8
18. ve49.core02.tpa.sagonet.net 9.2% 303 509.5 506.6 484.2 526.6 7.2
19. gi0-2.ds05.tpa.sagonet.net 9.9% 303 311.2 308.3 291.6 321.4 6.6
20. ???
21. silenceisdefeat.org 99.7% 303 501.0 501.0 501.0 501.0 0.0

在 *nix 下
使用 SSH 命令:
ssh -f -C -q -N -D port number username@domain.tld
这样就可以把 Tunnel 放到后台执行了,参数的具体意思请参照 ssh 的 man page。

在 Windows 下
如果想把 Tunnel 放到后台,Putty 似乎不提供这个功能,不过我们可以使用一个叫 MyEntunnel 的小程序。它可以使 plink (putty 的命令行形式) 运行在后台并监视之,如果网络连接断了或是其它情况使 plink 停止运行,MyEntunnel 会自动重新启动 plink 并建立连接。

http://nemesis2.qx.net/software-myentunnel.php

事实上,MyEnTunnel 就是一个 pLink 的前端程序,建立 SSH Tunnel 还是靠 pLink(自)。在 MyEnTunnel 中,我们只需要填写好相关的信息即可,不需要记忆 pLink 那“丰富”的参数。对于一般用户而言,我们只需要设置以下几项(Setting 选项卡):

SSH Server:就是你的 SSH 服务器的地址;
SSH Port:一般都是 22;
Username/Password:用户名/密码;
选中 Reconnect on Failure,Enable Dynamic SOCKS;
Port:填上你本地代理的端口,如 8080;
然后点击 Connect 就可以了,等待任务栏中的小锁变成绿色,说明我们成功建立了一条 SSH Tunnel,并在 localhost:8080 上开启了一个 Socks 服务器。在你的浏览器中进行相关设置后,你就可以看到 Feedburner,看到 WordPress.com,看到 YouTube 了……

当然,相对于直接使用 pLink 来说,MyEnTunnel 最大的优势在于“断线重连”功能。它可以自动监视 pLink 的运行状态,如果断线了便可以自动重新连接。对于本本用户来说,我们可以自由的合上本本待机了,酷

当然,MyEnTunnel 虽好,但使用还是有一定的条件的:

一个大火长城外的 SSH Server,并且支持 SSH Tunnel。这对于如今的 Blogger 来说貌似不是什么难事,Dreamhost,Bluehost 都 OK;
服务器/虚拟主机需要支持比较大的流量。这个是很需要注意的,因为通过 Tunnel 的访问所产生的流量都是要计入你的 Hosting Account 的。国外主机流量虽大,但超了费用也高,所以还是建议您最小化使用 Tunnel,另外不要分享你的 SSH Account,特别是对于 mt, dreamhost 这样支持多个 SSH Account 的主机;
本地软件支持 Sock 代理。Firefox 是没问题的,QQ/MSN/GTalk 也都没问题。如果您的软件只支持 HTTP 代理的话,我建议您用 CCProxy 的二级代理功能建立一个本地的 HTTP 代理;如果您的软件压根就不支持代理设置,可以考虑用 SockCaps 这样的软件来解决;

http://bemike.org/2007/07/16/surpassing-gfw.html
突破 GFW 一法
Published on July 16, 2007 @ 10:32 am

生活在世界上最大的局域网中,是我们的无奈,但要是想突破 GFW 办法还是有的是的。
很多人喜欢用 Tor 或是”xx之门”之类的软件穿墙,我没用过,据说这两种方法速度都不太灵光。然后有一些人用 PHProxy 这个软件把国外主机变成代理服务器,通过代理访问不能访问的网站。这个方法我认为非常的好,尤其是 PHProxy 在使用上非常简单,如果你和代理之间的网络速度良好的话,访问任何墙外的网站速度都是非常快的。
如果你自己没有国外主机的话,其实一点也没关系,在网上搜索使用 PHProxy 的服务器比搜索普通的代理服务器容易的多,而且只要能找到使用 PHProxy 的服务器,几乎 100% 都可以正常使用,这点比普通代理服务器好的太多了。
在 Google 中搜索:
intitle:phproxy
然后你就可以看到一大堆的结果,别客气,选一个你访问起来最快的,尽情的向自由的世界奔去吧!
Update: dawnh 同学有一个非常好的补充,在上述的搜索语句中加入 inurl:https 就可以访问基于内容过滤的网站了。


intitle:phproxy inurl:https

http://www.brandonhutchinson.com/ssh_tunnelling.html
“Reverse” ssh tunnel
It is possible to create a “reverse” ssh tunnel. The reverse tunnel will allow you to create an ssh tunnel from your work computer to your home computer, for example, and then login to your work machine from your home machine even if your work firewall does not permit ssh traffic initiated from your home machine!

For this to work, an ssh server must be installed on your work and home computer, and ssh (TCP port 22) must be allowed outbound from your work computer to your home computer.

$ ssh -R remote_port:localhost:22 your_home_computer

ex. $ ssh -R 2048:localhost:22 home.computer.com

At home, you would then run ssh -p 2048 localhost to log into your work computer via ssh.

Here is a script I run every 5 minutes through the cron facility on my work system to make sure the reverse ssh tunnel to my home system is up and running. It is useful in case my_home_system is rebooted.

2006-11-15 update:

#!/bin/sh

# $REMOTE_HOST is the name of the remote system
REMOTE_HOST=my.home.system

# $REMOTE_PORT is the remote port number that will be used to tunnel
# back to this system
REMOTE_PORT=5000

# $COMMAND is the command used to create the reverse ssh tunnel
COMMAND="ssh -q -N -R $REMOTE_PORT:localhost:22 $REMOTE_HOST"

# Is the tunnel up? Perform two tests:

# 1. Check for relevant process ($COMMAND)
pgrep -f -x "$COMMAND" > /dev/null 2>&1 || $COMMAND

# 2. Test tunnel by looking at "netstat" output on $REMOTE_HOST
ssh $REMOTE_HOST netstat -an | egrep "tcp.*:$REMOTE_PORT.*LISTEN"
   > /dev/null 2>&1
if [ $? -ne 0 ] ; then
   pkill -f -x "$COMMAND"
   $COMMAND
fi

ssh_tunnelling

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.