1

如果我想使用密码,我可以这样做:

`sshpass -f <(printf '%s\n' your_password) ssh user@hostname`

但是 sshpass 似乎不适用于公钥。我尝试了以下命令,但失败了:

`sshpass -f <(printf '%s\n' your_passphrase) ssh -o PreferredAuthentications=publickey user@hostname`

有什么好的方法吗?

4

2 回答 2

5

您可以使用该sshpass选项-P来检测密码提示:

sshpass -Ppassphrase -f <(printf '%s\n' your_passphrase) ssh -o PreferredAuthentications=publickey user@hostname
于 2017-09-26T09:32:07.190 回答
0

你到底为什么要使用sshpass它来输入公钥?

如果您想在交互式情况下使用没有密码提示的公钥,只需使用ssh 代理。至少在 Ubuntu 上,它默认运行。您所要做的就是添加您想要的密钥并输入一次密码。

如果您想通过脚本执行此操作,只需创建密钥的未加密版本。它与 using 一样安全(如果不是更安全的话)sshpass,并且省去了使用其他程序的麻烦。

就个人而言,我从头开始编写了几个开源项目。在获得一定知名度的四个左右中,没有一个比sshpass. 这是一天的工作,旨在解决特定的极端案例。我知道它比我最初预期的要有用得多,但是如果可以选择公钥身份验证,我真的看不出任何使用它的意义。

于 2017-09-26T10:31:13.950 回答