CentOS 7 下 SSH 使用 Socks5 欧博abg代理连接服务器

文章正文
发布时间:2024-06-04 08:41

有时因为各种原因,欧博abg更倾向于让 SSH 走一个代理。如果有一个全局的 VPN 或者路由可以透明代理,那就不用多说了。但往往本地只运行了一个提供 socks5 代理的客户端,如此,SSH 通过 socks5 代理的使用方法记录如下。

安装 privoxy,为了将已有的 socks5 代理转换为 http 代理:

1
  sudo yum install -y epel-release privoxy
 

编辑 privoxy 的配置文件:

1
  sudo vim /etc/privoxy/config
 

搜索 socks5t ,欧博官网找到第1336行,去掉前面的注释符,端口改成 socks5 的端口:

/etc/privoxy/config1
  forward-socks5t / 127.0.0.1:1080 .
 

启动 Privoxy服务:

1
2
  sudo systemctl enable privoxy
sudo systemctl start privoxy
 

由于 CentOS 预装的是 nmap-ncat,这和 OpenBSD 的 netcat 是有不同的,前者只支持 socks4 和 http,这也是为什么要用 privoxy 把 socks5 先转成 http 代理。nc 命令的用法也不一样。

编辑 ssh 的 config 文件:

1
  vim ~/.ssh/config
 

在想使用代理的 Host 下添加一行 ProxyCommand:

~/.ssh/config1
2
3
4
5
  Host *****
HostName *****
Port **
User ****
ProxyCommand nc --proxy 127.0.0.1:8118 %h %p
 

这样终端通过 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。网上看到有人说用同样的命令是成功的。

首页
评论
分享
Top