我已经在我的 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_user
并vpn_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}'")'
注意'
环境变量周围的。它们将它们从字符串中取出,以便进行替换。