使用带有公钥的 parallel-ssh

使用带有公钥的 parallel-ssh

我已经配置了远程 ssh 服务器,以便通过公钥-私钥对(仅)登录。我可以使用 ssh 登录服务器并运行命令:

ssh [email protected]  -i ~/.ssh/my_key echo fu

我想使用parallel-sshfrompssh包向服务器发送命令。我使用-H选项指定服务器列表(一个服务器),-i在屏幕上打印结果,-A这样程序就会要求输入密钥的密码。文档指出它能够使用-x或将参数传递给 ssh -X。但是,以下命令都不起作用:

parallel-ssh -A -i -H "[email protected]" -X "-i ~/.ssh/my_key" 'echo fu'

输出为:

Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password:
[1] 17:03:35 [FAILURE] [email protected] Exited with error code 255
Stderr: Warning: Identity file ~/.ssh/my_key not accessible: No such file or directory.
Permission denied (publickey).

(我可以使用 来查看该文件ll ~/.ssh/my_key。)

此命令也不会成功:

 parallel-ssh -A -i -H "[email protected]" -x '-i ~/.ssh/my_key' 'echo fu'

输出:

Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password:
[1] 17:15:06 [FAILURE] [email protected] Exited with error code 255
Stderr: Enter passphrase for key '/home/local_user/.ssh/my_key':
Permission denied (publickey).

第二个完全是奇怪的,因为man parallel-ssh声称-A选项确实“提示输入密码并将其传递给 ssh。密码可以用于解锁钥匙或用于密码验证。”

那么,如何在parallel-ssh命令中使用受密码保护的公钥?

答案1

这是一个错误pssh程序中,它只是一组 Python 脚本。这些脚本依靠解析ssh程序输出来与其交互。

让它发挥作用的一种方法是自己修复. dpkg -L pssh将列出随包安装的所有文件psshaskpass_client.py是需要修改的文件。第 67 行是

if not prompt.strip().lower().endswith('password:'):

应该是:

if not ( prompt.strip().lower().endswith('password:') or 'enter passphrase for key' in prompt.strip().lower()):

然后命令

parallel-ssh  -A -i -H "[email protected]" -x "-i ~/.ssh/my_key"  'echo fu'

将工作。

相关内容