有时因为各种原因,欧博abg更倾向于让 SSH 走一个代理。如果有一个全局的 VPN 或者路由可以透明代理,那就不用多说了。但往往本地只运行了一个提供 socks5 代理的客户端,如此,SSH 通过 socks5 代理的使用方法记录如下。
安装 privoxy,为了将已有的 socks5 代理转换为 http 代理:
1编辑 privoxy 的配置文件:
1搜索 socks5t ,欧博官网找到第1336行,去掉前面的注释符,端口改成 socks5 的端口:
/etc/privoxy/config1启动 Privoxy服务:
1由于 CentOS 预装的是 nmap-ncat,这和 OpenBSD 的 netcat 是有不同的,前者只支持 socks4 和 http,这也是为什么要用 privoxy 把 socks5 先转成 http 代理。nc 命令的用法也不一样。
编辑 ssh 的 config 文件:
1在想使用代理的 Host 下添加一行 ProxyCommand:
~/.ssh/config1这样终端通过 ssh username@host 就可以直接走代理了。登录远端之后,可使用 who 检查当前 ip 是否为代理服务器的 ip。
踩过的坑如果想直接用 ProxyCommand nc -X 5 -x localhost:1080 %h %p 是不行的,会出现,nc: invalid option -- X 的错误。原因上面说过了,CentOS 自带的是 nmap-ncat 。
之前安装过 connect-proxy,试过在 ProxyCommand 里直接用 socks5 代理。未果。使用ProxyCommand connect-proxy -S 127.0.0.1:1080 %h %p,刚刚好奇又试了一次,同样不行,出现 ssh_exchange_identification: Connection closed by remote host。网上看到有人说用同样的命令是成功的。