使用 netctl 询问 IPSec VPN 连接的密码

使用 netctl 询问 IPSec VPN 连接的密码

TL;DR:如何使用 IPSec 连接到 VPN,而不在配置文件中写入密码和机密,而是从外部提供(在我的情况下是调用我的密码管理器pass)?

netctl我已经在工作中使用、pass、 和的组合openconnect来连接到非 IPSec vpn。我的 netctl 配置文件基本上是这样的

razr@notebook [~]
-> % cat /etc/netctl/my-vpn 
Description='myVPN'
Interface=vpn
Connection=tuntap
Mode=tun

BindsToInterfaces=(tun0)
IP=no

PIDFILE=/run/openconnect_${Interface}.pid
SERVER=my.server.com
LOCAL_USERNAME=razr
PASS_PATH=com/myserver/razr
REMOTE_USERNAME=razr

ExecUpPost="echo '`su ${LOCAL_USERNAME} -c "DISPLAY=:0 pass ${PASS_PATH}" | head -n 1`' | /usr/bin/openconnect --background --pid-file=${PIDFILE} --interface ${Interface} --user='${REMOTE_USERNAME}' --passwd-on-stdin ${SERVER} ; chmod 644 ${PIDFILE}"                                                                  
ExecDownPre="kill -INT $(cat ${PIDFILE}) ; resolvconf -d ${Interface} ; ip link delete ${Interface}"
razr@notebook [~]
-> %

因此,当我启动配置文件时my-vpn,会调用 pass 来获取密码com/myserver/razr,因此我被要求解锁我的 pgp 密钥(这就是为什么有DISPLAY:=0; 还不理想,我知道:))。

现在我想连接到 IPSec VPN。看起来,这openconnect与 IPSec 不兼容(如果我错了,请纠正我)。所以我尝试使用vpnc它。我已经可以在第一次测试中使用完全填充的配置文件进行连接。但我不想将我的密码(也许也不是 IPSec 秘密)保存在配置文件中,而是保存在pass.

那么,是否可以在配置中从外部提供密码和秘密vpnc?或者是否有其他工具可以做到这一点,我可以将其集成到netctl配置文件中?

相关内容