如何使用 openvpn 命令行使用环境变量进行连接?

如何使用 openvpn 命令行使用环境变量进行连接?

我已经在我的 Linux 笔记本电脑上安装了 OpenVPN。我认为它是 OpenVPN 版本 2。

$ sudo openvpn --version

OpenVPN 2.4.4 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Jul 19 2021
library versions: OpenSSL 1.1.1c  28 May 2019, LZO 2.08
Originally developed by James Yonan
Copyright (C) 2002-2017 OpenVPN Technologies, Inc. <[email protected]>
Compile time defines: enable_async_push=no enable_comp_stub=no enable_crypto=yes enable_crypto_ofb_cfb=yes enable_debug=yes enable_def_auth=yes enable_dependency_tracking=no enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown enable_fast_install=needless enable_fragment=yes enable_iproute2=yes enable_libtool_lock=yes enable_lz4=yes enable_lzo=yes enable_maintainer_mode=no enable_management=yes enable_multihome=yes enable_pam_dlopen=no enable_pedantic=no enable_pf=yes enable_pkcs11=yes enable_plugin_auth_pam=yes enable_plugin_down_root=yes enable_plugins=yes enable_port_share=yes enable_selinux=no enable_server=yes enable_shared=yes enable_shared_with_static_runtimes=no enable_silent_rules=no enable_small=no enable_static=yes enable_strict=no enable_strict_options=no enable_systemd=yes enable_werror=no enable_win32_dll=yes enable_x509_alt_username=yes with_aix_soname=aix with_crypto_library=openssl with_gnu_ld=yes with_mem_check=no with_sysroot=no

它正在使用 NordVPN 进行连接。我可以通过发出类似以下命令来连接它

sudo openvpn /etc/openvpn/ovpn_tcp/us2950.nordvpn.com.tcp.ovpn

运行正常,但会提示输入登录名和密码。我宁愿在环境变量中设置登录名和密码。在尝试谷歌解决方案后,我完全迷失了方向,陷入了复杂的境地。

谁能帮我?

答案1

您可以使用--auth-user-pass标志与bash 进程替换

假设您有环境变量vpn_uservpn_pw保存您的用户名和密码。

棘手的部分是您必须将完整的命令包装在 sudo 中,以阻止 sudo 在权限提升后关闭文件描述符。

sudo bash -c 'openvpn /etc/openvpn/ovpn_tcp/us2950.nordvpn.com.tcp.ovpn --auth-user-pass <(echo -e "'${vpn_user}'\n'${vpn_pw}'")'

注意'环境变量周围的。它们将它们从字符串中取出,以便进行替换。

相关内容