JOh*_*09a 8 linux bash command echo
我正在使用IPVanish在冲浪时使用代理;喜欢:
sudo openvpn --config /home/ipv/conf/ipvanish-CA-Toronto-tor-a09.ovpn
Run Code Online (Sandbox Code Playgroud)
现在,我必须输入我的用户名,然后输入密码。如何将这两个参数作为一个命令正确传递,以便仅使用一个命令,并且用户名/密码会自动传递?
小智 15
在我看来,您有一个配置文件 .ovpn ,其中包含所需的配置,您需要创建一个包含用户名和密码的新文件,您可以这样做:
vi pass.txt
Run Code Online (Sandbox Code Playgroud)
添加此行,保存并退出
username
password
Run Code Online (Sandbox Code Playgroud)
现在进入 .ovpn 配置文件并进行编辑,应该有一行读取 auth-user-pass
添加您的用户名和密码文件
验证用户密码 pass.txt
好的,现在您应该只需执行 .ovpn 文件即可对 VPN 进行身份验证
如果您需要执行 RDP 之类的操作,还有一种方法可以进行身份验证,而无需每次使用 #!/bin/bash 脚本输入密码。
先前的答案对我不起作用(仍要求输入用户名和密码),有效的方法是将您的凭据放入文件(pass.txt)中,就像这样
username@email.com
password
Run Code Online (Sandbox Code Playgroud)
并使用调用openvpn --auth-user-pass pass.txt。
小智 7
Following @Fluffy answer (unfortunately I don't have enough reputation to comment)
有一个不错的bash技巧可以消除对pass.txt文件的需要
侵害
openvpn ... --auth-user-pass pass.txt
Run Code Online (Sandbox Code Playgroud)
pass.txt在哪里
opvn_user
ovpn_pass
Run Code Online (Sandbox Code Playgroud)
一个可以使用
openvpn ... --auth-user-pass <(echo -e "opvn_user\novpn_pass")
Run Code Online (Sandbox Code Playgroud)
小智 6
在 OpenVPN 2.5.0 上,作为命令行参数传递--auth-user-pass对我来说不起作用。但是auth-user-pass在部分之前添加 .ovpn 文件就可以解决问题,如下所述: https: //forums.openvpn.net/viewtopic.php?t =11342
建议的解决方案的问题在于,所有这些都基于纯文本密码。
我想出了以下 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"'")'
Run Code Online (Sandbox Code Playgroud)
它查询密码管理器 (kwallet) 以获取密码。它还允许您重用现有配置CONFIG_FILE(--auth-user-pass如果有的话,只需从中删除条目)