使用ssh时如何避免为公钥键入密码

时间:2017-09-26 08:31:39

标签: linux ssh sshpass

如果我想使用密码,我可以通过以下方式完成:

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

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

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

有没有好办法呢?

2 个答案:

答案 0 :(得分:2)

为什么要使用sshpass才能输入公钥?

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

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

就个人而言,我从头开始编写了几个开源项目。在获得一些人气的四个人中,没有人比sshpass更让我感到惊讶。这是一天的工作,旨在解决特定的角落案件。 事实证明它比我原先预期的要有用得多,但如果公共密钥认证是一种选择,我真的没有看到使用它的任何情况。

答案 1 :(得分:1)

使用参数-P sshpass -Ppassphrase -f&lt;(printf&#39;%s \ n&#39; your_passphrase)ssh -o PreferredAuthentications = publickey user @ hostname