linux:在命令行中传递用户名和密码

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 脚本输入密码。


Flu*_*ffy 9

先前的答案对我不起作用(仍要求输入用户名和密码),有效的方法是将您的凭据放入文件(pass.txt)中,就像这样

username@email.com
password
Run Code Online (Sandbox Code Playgroud)

并使用调用openvpn --auth-user-pass pass.txt

资源

  • 这对我不起作用:`选项错误:[CMD-LINE]中无法识别的选项或缺少或额外的参数:1:auth-user-pass (2.4.4)` (9认同)
  • 需要 --config 出现在 --auth-user-pass 之前的错误仍然存​​在(刚刚在我的 Suse Leap 15.2 上出现过)...感谢您提到它,这拯救了我的理智:-) (6认同)
  • @OleTange 我也是,但我已经更新了答案。在“--config”之后使用“--auth-user-pass”重试。 (3认同)
  • openvpn3不支持该参数 (2认同)
  • 这些不是非常脆弱的解决方案吗? (2认同)
  • 我遇到了问题,但我通过在我的 _.ovpn_ 文件中包含行 `auth-user-pass <absolute_path_to_text_file>` 来解决这个问题(您可以使用基本文本编辑器进行编辑)。 (2认同)

小智 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)

  • 好主意,但用 `sudo openvpn ...` `'/dev/fd/63' 调用时不起作用:没有这样的文件或目录 (errno=2)` (5认同)
  • 这对我不起作用:`选项错误:[CMD-LINE]中无法识别的选项或缺少或额外的参数:1:auth-user-pass (2.4.4)` (3认同)
  • `sudo bash -c 'openvpn ... &lt;(echo -e "....")'` 有效。 (3认同)

小智 6

在 OpenVPN 2.5.0 上,作为命令行参数传递--auth-user-pass对我来说不起作用。但是auth-user-pass在部分之前添加 .ovpn 文件就可以解决问题,如下所述: https: //forums.openvpn.net/viewtopic.php?t =11342


ka3*_*3ak 5

建议的解决方案的问题在于,所有这些都基于纯文本密码。

我想出了以下 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如果有的话,只需从中删除条目)