Linux 上的 Open***:在命令行中传递用户名和密码

Posted

技术标签:

【中文标题】Linux 上的 Open***:在命令行中传递用户名和密码【英文标题】:Open*** on Linux: passing username and password in command line 【发布时间】:2016-12-16 14:28:06 【问题描述】:

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

sudo open*** --config /home/ipv/conf/ipvanish-CA-Toronto-tor-a09.o***

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

【问题讨论】:

【参考方案1】:

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

username@email.com
password

并使用--auth-user-pass pass.txt 调用open***。

source

请注意,在某些 Open*** 版本(例如 Open*** 2.4.11)中存在一个错误,您必须先使用--config,然后再使用--auth-user-pass,否则您的身份验证文件将被忽略而没有任何警告。

所以,这里有一个完整的例子:

sudo open*** --config /home/ipv/conf/ipvanish-CA-Toronto-tor-a09.o*** --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) open***3 不支持这个参数 这些不是很容易受到攻击的解决方案吗? 我遇到了问题,但我通过在我的 .o*** 文件中包含 auth-user-pass <absolute_path_to_text_file> 行解决了这个问题(您可以使用基本的文本编辑器进行编辑)。 需要 --config 出现在 --auth-user-pass 之前的错误仍然存​​在(刚刚在我的 Suse Leap 15.2 上出现过)......谢谢你提到它,这让我恢复了理智:-)【参考方案2】:

关注@Fluffy 回答(不幸的是我没有足够的声誉发表评论)

有一个不错的 bash 技巧可以消除对 pass.txt 文件的需要

open*** ... --auth-user-pass pass.txt

pass.txt 在哪里

opvn_user
o***_pass

可以使用

open*** ... --auth-user-pass <(echo -e "opvn_user\no***_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 open*** ...'/dev/fd/63': No such file or directory (errno=2)调用时不起作用 sudo bash -c 'open*** ... &lt;(echo -e "....")' 工作。【参考方案3】:

建议的解决方案的问题是它们都基于纯文本密码。

我想出了以下 bash 脚本来解决这个问题:

***_USER="your user name"
***_PASSWORD="$(sudo kwallet-query -l secrets -r your_password)"
CONFIG_FILE=/tmp/your_***.o***

sudo bash -c 'open*** --config '"$CONFIG_FILE"' --auth-user-pass <(echo -e "'"$***_USER"'\n'"$***_PASSWORD"'")'

它查询密码管理器(kwallet)以获取密码。它还允许您重用CONFIG_FILE 中的现有配置(如果有,只需从中删除--auth-user-pass 条目)

【讨论】:

有没有类似的东西让windows不需要这个文件? @My1 不确定,因为我只使用 Linux 我得到的密码中有“字符”:bash: -c: line 0: unexpected EOF while looking for matching `"'【参考方案4】:

我不是新来的,但这是我的第一个贡献

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

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

vi pass.txt

添加此行,保存并退出

username  
password

现在转到 .o*** 配置文件并编辑,应该有一行显示 验证用户密码

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

auth-user-pass pass.txt

好的,现在您应该能够通过执行您的 .o*** 文件来对 *** 进行身份验证

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

【讨论】:

这是 2021 年最终对我有用的方法。我使用的是树莓派。【参考方案5】:

将 --auth-user-pass 作为命令行参数在 Open*** 2.5.0 上对我不起作用。但是在部分之前的 .o*** 文件中添加 auth-user-pass 就可以做到这一点,如下所述:https://forums.open***.net/viewtopic.php?t=11342

【讨论】:

【参考方案6】:

给那些在命令行中有--auth-user-path问题的人总结:

cd /etc/open***
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.o***

在文件中auth-user-pass之后添加my_auth_pass.txt

auth-user-pass my_auth_pass.txt

关闭o***文件,然后

sudo open*** ipvanish-CA-Toronto-tor-a09.o*** 

应该可以。

感谢florin27。

【讨论】:

以上是关于Linux 上的 Open***:在命令行中传递用户名和密码的主要内容,如果未能解决你的问题,请参考以下文章

Linux命令行中好用的快捷键

linux虚拟机下如何在命令行中后退。

是否可以在命令行中在 Maven Deploy 中传递密码?

在 Windows 命令行中使用管道

fedora 中从命令行中直接打开资源管理器

干货分享 | 在 Linux 命令行中使用 tcpdump 抓包