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*** ... <(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***:在命令行中传递用户名和密码的主要内容,如果未能解决你的问题,请参考以下文章