我有一个相当长的密码,我想使用秘密管理器自动执行,我不想以明文形式存储它。
从这个答案来看,我可以使用环境变量来实现这一点,这很棒。
快速检查使用sudo openvpn --config ~/Documents/config.ovpn --auth-user-pass test.txt
效果,也很棒!我需要 sudo,否则 openvpn 无法工作。
但我无法正确执行命令,我可能犯了一些小错误。
我试过:
sudo openvpn --config ~/Documents/config.ovpn --auth-user-pass <(echo -e $VPN_USER"\n"$VPN_PASS)
但这会导致:
2024-04-13 20:11:43 WARNING: cannot stat file '/proc/self/fd/14': No such file or directory (errno=2)
Options error: --auth-user-pass fails with '/proc/self/fd/14': No such file or directory (errno=2)
我认为这是由于我使用 sudo 造成的。所以我尝试了其他方法(我不完全是 bash 专业人士):
cat <(echo -e $VPN_USER"\n"$VPN_PASS) | sudo /usr/sbin/openvpn --config ~/Documents/config.ovpn --auth-user-pass
但这会导致:
Password entry required for 'Enter Auth Username:' (PID 191957).
Please enter password with the systemd-tty-ask-password-agent tool.
这可能是一个简单的问题。
sudo
默认情况下,关闭除 stdin、stdout 和 stderr 之外的所有文件描述符——因此它故意使引用无效/dev/fd
。您可以通过使用命名的 FIFO 来避免此问题 - 就像 bash在不支持 的操作系统上运行时
>(...)
所做的那样。<(...)
/dev/fd