SSH的HTTP代理设置
我想ssh一台远在美国的虚拟主机。但是公司里为了访问外网需要通过一个http代理(http://proxy.mycompany.com:8080)。 如果我在 Windows 下工作,可以用 putty 这样的 ssh client,因为它支持设置 http 代理。但是如果在 Linux 或者 Windows/Cygwin 下用 OpenSSH,就需要一个第三方程序来帮忙了。我在 Cygwin 下尝试用了 Corkscrew,挺好用的。
安装 Corkscrew:
下载 corkscrew 的源码包,解码,编译,安装:
tar -xzvf corkscrew.tar.gz # [..] cd corkscrew ./configure make install
配置SSH客户端
修改~/.ssh/config,在其中添加一下内容:
Host * ProxyCommand path-to-corkscrew proxy.mycompany.com 8080 %h %p
注意:proxy.mycompany.com 8080需要被替换成实际的http代理服务的主机名和端口号。
还需要注意设置 ~/.ssh/config 的访问权限:
chmod 600 ~/.ssh/config
设置http代理的口令
如果http代理需要用账户和口令来认证,可以把账户和口令存在文本文件~/.ssh/proxyauth里,格式是:
username:password
然后修改~/.ssh/config:
Host * ProxyCommand path-to-corkscrew proxy.mycompany.com 8080 %h %p ~/.ssh/proxyauth
这样就让 corkscrew 知道口令和密码了。
试试看
连接一下远程机器(比如叫remote.machine.com):
ssh username@remote.machine.com
在http代理上再打通一层socks代理
用这个命令建立一个ssh tunnel:
ssh -D 12345 username@remote.machine.com
然后把你的浏览器(或者其他会访问Internet的程序)的代理设置成:
- 类型:socks5
- 主机名:127.0.0.1
- 端口号:12345
这样就在开放的http代理之上,利用ssh形成了一个安全的(加密的)socks5 proxy。
原文:http://cxwangyi.wordpress.com/2011/07/04/ssh%E7%9A%84http%E4%BB%A3%E7%90%86%E8%AE%BE%E7%BD%AE/
用proxychains更好用
这没有测试过,不清楚,感谢支持。