【发布时间】:2016-12-16 14:28:06
【问题描述】:
我正在使用 IPVanish 在冲浪时使用代理;喜欢:
sudo openvpn --config /home/ipv/conf/ipvanish-CA-Toronto-tor-a09.ovpn
现在,我必须输入我的用户名,然后输入我的密码。 如何将这两个参数作为一个命令传递,以便我只使用一个命令并且用户名/密码会自动传递?
【问题讨论】:
我正在使用 IPVanish 在冲浪时使用代理;喜欢:
sudo openvpn --config /home/ipv/conf/ipvanish-CA-Toronto-tor-a09.ovpn
现在,我必须输入我的用户名,然后输入我的密码。 如何将这两个参数作为一个命令传递,以便我只使用一个命令并且用户名/密码会自动传递?
【问题讨论】:
之前的答案对我不起作用(仍然要求输入用户名和密码),起作用的是将您的凭据放入文件(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
【讨论】:
Options error: Unrecognized option or missing or extra parameter(s) in [CMD-LINE]:1: auth-user-pass (2.4.4)
auth-user-pass <absolute_path_to_text_file> 行解决了这个问题(您可以使用基本的文本编辑器进行编辑)。
关注@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用法
【讨论】:
base64 -d encode_data_here 而不是这个(echo..)?
Options error: Unrecognized option or missing or extra parameter(s) in [CMD-LINE]:1: auth-user-pass (2.4.4)
sudo openvpn ...'/dev/fd/63': No such file or directory (errno=2)调用时不起作用
sudo bash -c 'openvpn ... <(echo -e "....")' 工作。
建议的解决方案的问题是它们都基于纯文本密码。
我想出了以下 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 条目)
【讨论】:
我不是新来的,但这是我的第一个贡献
这就是我所做的:(我是菜鸟,欢迎提出建议)
在我看来你有一个配置文件 .ovpn 需要配置,你需要创建一个包含用户名和密码的新文件,你可以这样做
vi pass.txt
添加此行,保存并退出
username
password
现在转到 .ovpn 配置文件并编辑,应该有一行显示 验证用户密码
添加您的用户名和密码文件
auth-user-pass pass.txt
好的,现在您应该能够通过执行您的 .ovpn 文件来对 VPN 进行身份验证
如果您需要执行 RDP 之类的操作,还有一种无需每次使用 #!/bin/bash 脚本输入密码即可进行身份验证的方法,如果您需要帮助,请告诉我 :)
【讨论】:
将 --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
应该可以。
感谢florin27。
【讨论】: