每天手动操作GlobalProtect GUI连接VPN很麻烦,能不能自动化这个过程呢?厂长试了一下,使用OpenConnect是可以的。
安装OpenConnect
mac可以用Homebrew安装OpenConnnect:
brew install openconnect
安装完成后,使用openconnect --version
确保你已正确安装:
$ openconnect --version
OpenConnect version v9.01
Using GnuTLS 3.7.6. Features present: PKCS#11, RSA software token, HOTP software token, TOTP software token, Yubikey OATH, System keys, DTLS, ESP
Supported protocols: anyconnect (default), nc, gp, pulse, f5, fortinet, array
Default vpnc-script (override with --script): /usr/local/etc/vpnc-script
配置文件
自行创建,比如取名叫:gp.conf
protocol=gp
user=XXXX
passwd-on-stdin
authgroup=XXXX
大概意思就是:
protocol指定了使用GlobalProtect协议,因为OpenConnect还支持其他的,比如AnyConnect。
user就是你登录的用户名。
密码设置成了从命令行输入。
如果服务端没有多个gateway,就不用写authgroup。如果有,最好在这里直接指定。
连接
不需要MFA的
echo 你的密码 | sudo openconnect --config=gp.conf 你的gp服务端域名.com
带MFA的
cat <(echo 你的密码) <(echo 2) | sudo openconnect --config=gp.conf 你的gp服务端域名.com
这里的echo 2
是选中了OKTA Verify Push,然后我用手表点一下确认登录即可。sudo也可以用指纹或者手表确认。(sudo vim /etc/pam.d/sudo
,加入auth sufficient pam_tid.so
,然后w!
保存)
如果使用Google Authenticator之类的随机生成的6位的验证码,可以研究一下怎么生成,比如:https://github.com/robbiev/two-factor-auth。
退出
正常情况下可以直接Ctrl + C
退出,如果不能退出,可以使用sudo pkill -9 openconnect