我使用 IPVanish 在冲浪时使用代理;喜欢:
sudo openvpn --config /home/ipv/conf/ipvanish-CA-Toronto-tor-a09.ovpn
现在,我必须输入我的用户名,然后是我的密码。 如何将这两个参数作为一个命令传递,这样我只需使用一个命令,用户名/密码就会自动传递?
之前的答案对我不起作用(仍然要求输入用户名和密码),有效的是将您的凭据放入文件(pass.txt)中,就像这样
[email protected]
password
并使用
--auth-user-pass pass.txt
调用 openvpn。
请注意,在某些 OpenVPN 版本(例如 OpenVPN 2.4.11)中存在一个错误,您必须先使用
--config
,然后使用 --auth-user-pass
,否则您的身份验证文件将被忽略,而不会发出任何警告。
所以,这是一个完整的例子:
sudo openvpn --config /home/ipv/conf/ipvanish-CA-Toronto-tor-a09.ovpn --auth-user-pass pass.txt
以下@Fluffy答案(不幸的是我没有足够的声誉来发表评论)
有一个很好的 bash 技巧可以消除对 pass.txt 文件的需要
代替
openvpn ... --auth-user-pass pass.txt
pass.txt在哪里
opvn_user
ovpn_pass
一个人可以用
openvpn ... --auth-user-pass <(echo -e "opvn_user\novpn_pass")
请注意
\n
用户名和密码之间的用法
建议的解决方案的问题在于它们都基于纯文本密码。
我想出了以下bash脚本来解决这个问题:
VPN_USER="your user name"
VPN_PASSWORD="$(sudo kwallet-query -l secrets -r your_password)"
CONFIG_FILE=/tmp/your_vpn.ovpn
sudo bash -c 'openvpn --config '"$CONFIG_FILE"' --auth-user-pass <(echo -e "'"$VPN_USER"'\n'"$VPN_PASSWORD"'")'
它查询密码管理器(kwallet)以获取密码。它还允许您重用
CONFIG_FILE
中的现有配置(只需从中删除 --auth-user-pass
条目(如果有)
正如@Mesco 提到的,上面的命令失败了
bash: -c: line 1: unexpected EOF while looking for matching `"'
如果密码包含
"
我已将其更改为:
sudo bash -c 'openvpn --config '"$CONFIG_FILE"' --auth-user-pass <(echo -e "$VPN_USER"'\n''"$VPN_PASSWORD"')"
现在使用任何密码都应该可以工作
在我看来,你有一个配置文件 .ovpn 以及所需的配置,你需要创建一个包含用户名和密码的新文件,你可以这样做:
vi pass.txt
添加此行,保存并退出
username
password
现在进入 .ovpn 配置文件并进行编辑,应该有一行内容如下 身份验证用户密码
添加您的用户名和密码文件
身份验证用户密码 pass.txt
好的,现在您应该能够通过执行 .ovpn 文件来验证 VPN 了
如果您需要执行 RDP 之类的操作,还有一种方法可以进行身份验证,而无需每次使用 #!/bin/bash 脚本输入密码。
在 OpenVPN 2.5.0 上将
--auth-user-pass
作为命令行参数传递对我来说不起作用。但是在 .ovpn 文件中添加 auth-user-pass
就达到了这里的解释:https://forums.openvpn.net/viewtopic.php?t=11342
对于那些在命令行中遇到
--auth-user-path
问题的人的总结:
cd /etc/openvpn
sudo bash -c "echo -e 'username\npasswd' > my_auth_pass.txt" # creating/editing the credentials
sudo chmod 600 my_auth_pass.txt # security to disallow reading from group/others
sudo vi ipvanish-CA-Toronto-tor-a09.ovpn
在文件中的
my_auth_pass.txt
之后添加auth-user-pass
:
auth-user-pass my_auth_pass.txt
关闭ovpn文件,然后
sudo openvpn ipvanish-CA-Toronto-tor-a09.ovpn
应该可以。
归功于florin27。
在我的例子中,变量是由秘密管理器注入的,所以我只是对 @ka3ak 的示例进行了以下更改,以适应在 ECS 内的 docker 容器中运行的 bash 脚本。
$CONF= MyConfigFileName
$USERNAME=User1
$PASSWORD=UserUSer1
openvpn --config /scripts/$CONF-openvpn.ovpn --auth-user-pass <(echo -e $USERNAME"\n"$PASSWORD)
我必须按如下方式修改@ka3ak的答案才能使其正常工作:
kwallet-query -f Passwords -r [entry_name] kdewallet
,
然后从 VPN_PASSWORD 行中删除 sudo,因为它给出了分段错误错误。我还必须安装 libqt5-dxcbplugin 包(opensuse tumbleweed)。然后由于脚本中有 --auth-user-pass ,我从 .ovpn 配置文件中删除了该行,没有任何问题。