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

时间:2016-08-10 09:30:56

标签: linux bash command echo

我正在使用IPVanish在冲浪时使用代理;像:

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

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

6 个答案:

答案 0 :(得分:4)

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

我想出了以下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 条目)

答案 1 :(得分:3)

之前的回答对我不起作用(仍然要求输入用户名和密码),将您的凭据放入文件(pass.txt)的工作是什么,就像这样

redis.clients.jedis.exceptions.JedisConnectionException: Unknown reply: H

并使用username@email.com password 调用openvpn。

source

答案 2 :(得分:2)

以下是@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")

答案 3 :(得分:2)

在 OpenVPN 2.5.0 上,将 --auth-user-pass 作为命令行参数传递对我不起作用。但是在 .ovpn 文件中添加 auth-user-pass 之前的部分做了这里解释的技巧:https://forums.openvpn.net/viewtopic.php?t=11342

答案 4 :(得分:1)

您可以使用OpenVPN的--user参数以及--askpass stdin。然后你只需要将密码传递给OpenVPN的标准输入。

示例:

echo $PASS | openvpn ... --user $USER --askpass stdin

然而,这并不是真正安全,因为密码作为参数传递给命令,因此其他应用程序可以访问。

为避免这种情况,您只需使用文件:

echo $PASS > password.txt
chmod 600 password.txt
openvpn ... --user $USER --askpass password.txt

注意:将...替换为您的OpenVPN参数(此处为--config /home/ipv/conf/ipvanish-CA-Toronto-tor-a09.ovpn

答案 5 :(得分:1)

我在这里并不陌生,但这是我的第一项贡献

这就是我所做的:(我是菜鸟,欢迎提出建议)

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

vi pass.txt

添加此行,然后保存并退出

username  
password

现在转到.ovpn配置文件并进行编辑,应该有一行读取内容 auth-user-pass

添加您的用户名和密码文件

auth-user-pass pass.txt

好的,现在您只需执行.ovpn文件即可对VPN进行身份验证

如果您需要执行RDP之类的操作,则还有一种无需每次都使用#!/ bin / bash脚本输入密码即可进行身份验证的方法,请告诉我是否需要帮助:)