Linux上的OpenVPN:在命令行中传递用户名和密码[已关闭]

ztyzrc3y  于 2023-01-20  发布在  Linux
关注(0)|答案(8)|浏览(428)

此问题似乎与a specific programming problem, a software algorithm, or software tools primarily used by programmers无关。如果您认为此问题与another Stack Exchange site的主题有关,您可以留下评论,说明在何处可以回答此问题。
6个月前关闭。
社区在6个月前审查了是否重新讨论该问题,并将其关闭:
原始关闭原因未解决
Improve this question
我正在使用IPVanish使用代理,而冲浪;例如:

sudo openvpn --config /home/ipv/conf/ipvanish-CA-Toronto-tor-a09.ovpn

现在,我必须输入我的用户名,然后输入我的密码。我如何将这两个参数作为一个命令传递,这样我只使用一个命令,用户名/密码就会自动传递?

oknrviil

oknrviil1#

之前的答案对我不起作用(仍然要求用户名和密码),起作用的是将您的凭据放入一个文件(pass.txt)中,如下所示

username@email.com
password

并且呼叫具有--auth-user-pass pass.txt的OpenVPN。
source
请注意,在一些OpenVPN版本(如OpenVPN 2.4.11)有一个bug,你必须首先使用--config,然后--auth-user-pass或您的auth文件将被忽略,没有任何警告.
下面是一个完整的例子:

sudo openvpn --config /home/ipv/conf/ipvanish-CA-Toronto-tor-a09.ovpn --auth-user-pass pass.txt
9avjhtql

9avjhtql2#

以下@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用法

lvjbypge

lvjbypge3#

所建议的解决方案的问题在于它们都基于纯文本密码。
我提出了下面的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条目,只需将其删除即可)

ghhaqwfi

ghhaqwfi4#

在我看来,你有一个配置文件. ovpn与所需的配置,你需要创建一个包含用户名和密码的新文件,你可以这样做:

vi pass.txt

添加此行,保存并退出

username  
password

现在转到. ovpn配置文件并进行编辑,应该有一行显示auth-user-pass
添加用户名和密码文件
身份验证用户通行证通行证. txt
好了,现在您应该能够通过执行. ovpn文件来验证VPN
如果您需要执行RDP之类的操作,还有一种方法可以进行身份验证,而无需每次都使用#!/bin/bash脚本键入密码。

0mkxixxg

0mkxixxg5#

通过--auth-user-pass作为命令行参数没有为我工作在OpenVPN 2.5.0.但添加auth-user-pass在.ovpn文件之前的部分做了这里解释的技巧:https://forums.openvpn.net/viewtopic.php?t=11342

4c8rllxm

4c8rllxm6#

在命令行中使用--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的积分。

enyaitl3

enyaitl37#

在我的例子中,变量是由secrets管理器注入的,所以我只是对@ka3ak的示例做了以下更改,以适应在ECS的docker容器中运行的bash脚本。

$CONF= MyConfigFileName
$USERNAME=User1
$PASSWORD=UserUSer1

openvpn --config /scripts/$CONF-openvpn.ovpn --auth-user-pass <(echo -e $USERNAME"\n"$PASSWORD)
inb24sb2

inb24sb28#

我不得不修改@ka3ak的答案,使其工作如下:
kwallet-query -f Passwords -r [entry_name] kdewallet
然后从VPN_PASSWORD行中删除sudo,因为它会给出分段错误。我还必须安装libqt5-dxcbplugin(opensuse tumbleweed)包。然后,由于脚本中有--auth-user-pass,我从. ovpn配置文件中删除了该行,没有任何问题。

相关问题