如果我想使用密码,我可以通过以下方式完成:
`sshpass -f <(printf '%s\n' your_password) ssh user@hostname`
但是sshpass似乎不适用于公钥。我尝试了以下命令,但失败了:
`sshpass -f <(printf '%s\n' your_passphrase) ssh -o PreferredAuthentications=publickey user@hostname`
有没有好办法呢?
答案 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