Linux 上的 OpenVPN:在命令行中传递用户名和密码
OpenVPN on Linux: passing username and password in command line
我正在使用 IPVanish 在网上冲浪时使用代理;喜欢:
sudo openvpn --config /home/ipv/conf/ipvanish-CA-Toronto-tor-a09.ovpn
现在,我必须输入我的用户名,然后是我的密码。
我怎样才能将这两个参数作为一个命令传递,以便我只使用一个命令并且自动传递 username/password?
之前的答案对我不起作用(仍然要求输入用户名和密码),有效的方法是将您的凭据放入文件中 (pass.txt),就像这样
username@email.com
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
用法
我不是新来的,但这是我的第一个贡献
我是这样做的:(我是菜鸟,欢迎指教)
在我看来你有一个配置文件 .ovpn 需要配置,你需要创建一个包含用户名和密码的新文件,你可以这样做
vi pass.txt
添加这行,保存并退出
username
password
现在进入 .ovpn 配置文件并进行编辑,应该有一行内容为
授权用户密码
添加您的用户名和密码文件
auth-user-pass pass.txt
好的,现在您应该能够通过执行 .ovpn 文件对 VPN 进行身份验证
如果您需要执行类似 RDP 之类的操作,还有一种无需每次都使用 #!/bin/bash 脚本输入密码即可进行身份验证的方法,如果您需要帮助,请告诉我:)
建议的解决方案的问题是它们都基于纯文本密码。
我想出了以下 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
条目)
将 --auth-user-pass 作为命令行参数传递对我在 OpenVPN 2.5.0 上不起作用。但是在 .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
在文件auth-user-pass
后添加my_auth_pass.txt
:
auth-user-pass my_auth_pass.txt
关闭ovpn文件,然后
sudo openvpn ipvanish-CA-Toronto-tor-a09.ovpn
应该可以。
感谢 。
因为变量是由 secrets manager 注入的,所以 @ka3ak 的回答非常有用。我只是做了一些小改动以适应在 docker 容器中运行的 bash 脚本。
$CONF= MyConfigFileName
$USERNAME=User1
$PASSWORD=UserUSer1
openvpn --config /scripts/$CONF-openvpn.ovpn --auth-user-pass <(echo -e $USERNAME"\n"$PASSWORD)
我正在使用 IPVanish 在网上冲浪时使用代理;喜欢:
sudo openvpn --config /home/ipv/conf/ipvanish-CA-Toronto-tor-a09.ovpn
现在,我必须输入我的用户名,然后是我的密码。 我怎样才能将这两个参数作为一个命令传递,以便我只使用一个命令并且自动传递 username/password?
之前的答案对我不起作用(仍然要求输入用户名和密码),有效的方法是将您的凭据放入文件中 (pass.txt),就像这样
username@email.com
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
用法
我不是新来的,但这是我的第一个贡献
我是这样做的:(我是菜鸟,欢迎指教)
在我看来你有一个配置文件 .ovpn 需要配置,你需要创建一个包含用户名和密码的新文件,你可以这样做
vi pass.txt
添加这行,保存并退出
username
password
现在进入 .ovpn 配置文件并进行编辑,应该有一行内容为 授权用户密码
添加您的用户名和密码文件
auth-user-pass pass.txt
好的,现在您应该能够通过执行 .ovpn 文件对 VPN 进行身份验证
如果您需要执行类似 RDP 之类的操作,还有一种无需每次都使用 #!/bin/bash 脚本输入密码即可进行身份验证的方法,如果您需要帮助,请告诉我:)
建议的解决方案的问题是它们都基于纯文本密码。
我想出了以下 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
条目)
将 --auth-user-pass 作为命令行参数传递对我在 OpenVPN 2.5.0 上不起作用。但是在 .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
在文件auth-user-pass
后添加my_auth_pass.txt
:
auth-user-pass my_auth_pass.txt
关闭ovpn文件,然后
sudo openvpn ipvanish-CA-Toronto-tor-a09.ovpn
应该可以。
感谢
因为变量是由 secrets manager 注入的,所以 @ka3ak 的回答非常有用。我只是做了一些小改动以适应在 docker 容器中运行的 bash 脚本。
$CONF= MyConfigFileName
$USERNAME=User1
$PASSWORD=UserUSer1
openvpn --config /scripts/$CONF-openvpn.ovpn --auth-user-pass <(echo -e $USERNAME"\n"$PASSWORD)