LOADING...

加载过慢请开启缓存(浏览器默认开启)

loading

Linux 下使用 EasyConnect 和 SSH on Socks5 做代理

前话

因为公司有时是远程开发,以为应该是 OpenVPN 或者 Cisco VPN 这种在 Linux 下也比较方便的 VPN。问了周围同事,都不知道运维给的是什么 VPN……后来看着界面查了下,是国产深信服的 EasyConnect,对 Linux 也不是很友好,所以这上来就是折腾 VPN 的一个坑。

EasyConnect

注意版本的问题

EasyConnect 不同版本是不兼容的,现在被广泛使用的是 7.6.3 和 7.6.7。

直接安装

安装 7.6.7 完是直接可以使用的,所以这里不多述。反观 7.6.3 会遇见很多问题,公司也是 7.6.3 版本,所以这里是对 7.6.3 的问题解决。

老版本下载和安装

这个我在 aur issue 里面看到有人刚好有 7.6.3 的官方链接:http://download.sangfor.com.cn/download/product/sslvpn/pkg/linux_01/EasyConnect_x64.deb。

既然 aur 上有 PKGBUILD 了,我公司电脑也刚好是 Arch Linux,那就直接改下里头下载地址和 md5 值就好了,然后重新 makepkg 了。

运行出错

安装的位置是在 /usr/share/sangfor/EasyConnect, 终端运行,出现 Harfbuzz version is too old,因为 pango 的版本过高,所以需要可以找 debian 老版本的 pango 依赖,分别如下

将对应的 so 拷贝到安装目录下,可以看到

# > ldd EasyConnect | grep pango
	libpangocairo-1.0.so.0 => /usr/share/sangfor/EasyConnect/./libpangocairo-1.0.so.0 (0x00007fc34fc6f000)
	libpango-1.0.so.0 => /usr/share/sangfor/EasyConnect/./libpango-1.0.so.0 (0x00007fc34fae0000)
	libpangoft2-1.0.so.0 => /usr/share/sangfor/EasyConnect/./libpangoft2-1.0.so.0 (0x00007fc34e277000)

登录闪退

输入登录信息后,卡个近 1min,就莫名退出,查到的资料是说没有启用服务,所以在登录卡顿的时候,使用 root 权限在终端输入:

#> /usr/share/sangfor/EasyConnect/resources/shell/sslservice.sh

当出现:

sslservice.sh start ...
start CSClient seccess!
start svpnservice seccess!

就说明可以了。

使用 Docker

另外一种使用方式就是,容器实例里面运行 EasyConnect,然后代理出来。刚好在 github 有 dockerfile,dockerhub 上面也有对应的镜像,所以这就方便多了!且还不用自己去每次卡时间点去启动命令!

上面用的是 7.6.3,容器就用 7.6.7 吧,参照 github 上面的教程,先拉个镜像下来:

docker pull hagb/docker-easyconnect:vncless-7.6.7

接着实例化镜像,然后将 1080 端口的 socks5 映射出来:

docker run --device /dev/net/tun --cap-add NET_ADMIN -ti -v /tmp/.X11-unix:/tmp/.X11-unix -v $(xauth info | head -1 | awk '{print $3}'):/root/.Xauthority -e EXIT=1 -e TYPE=x11 -e DISPLAY=$DISPLAY -p 4449:1080 hagb/docker-easyconnect:vncless-7.6.7

SSH on Socks5

选择 Docker 使用 EasyConnect,平时工作是离不开 Shell 的。既然已经有 socks5 的代理,那么直接让 ssh 也走 socks5 代理就可以了。

安装 openbsd-netcat(并非 netcat):

pacman -S openbsd-netcat

然后 ssh 的连接加上代理:

ssh -o ProxyCommand='nc -x ${socks5_ip}:${socks5_port} %h %p' ${user}@${target_ip}

sftp 也是支持的:

sftp -o ProxyCommand='nc -x ${socks5_ip}:${socks5_port} %h %p' ${user}@${target_ip}

SSH on SSH

同样的,ssh 也是可以通过 ssh 做跳板的:

ssh -J ${proxy_user}@${proxy_ip}:${proxy_port} ${user}@${target_ip}

sftp 也是同理:

sftp -J ${proxy_user}@${proxy_ip}:${proxy_port} ${user}@${target_ip}