如果我想使用密码,我可以这样做:
`sshpass -f <(printf '%s\n' your_password) ssh user@hostname`
但是 sshpass 似乎不适用于公钥。我尝试了以下命令,但失败了:
`sshpass -f <(printf '%s\n' your_passphrase) ssh -o PreferredAuthentications=publickey user@hostname`
有什么好的方法吗?
您可以使用该sshpass
选项-P
来检测密码提示:
sshpass -Ppassphrase -f <(printf '%s\n' your_passphrase) ssh -o PreferredAuthentications=publickey user@hostname
你到底为什么要使用sshpass
它来输入公钥?
如果您想在交互式情况下使用没有密码提示的公钥,只需使用ssh 代理。至少在 Ubuntu 上,它默认运行。您所要做的就是添加您想要的密钥并输入一次密码。
如果您想通过脚本执行此操作,只需创建密钥的未加密版本。它与 using 一样安全(如果不是更安全的话)sshpass
,并且省去了使用其他程序的麻烦。
就个人而言,我从头开始编写了几个开源项目。在获得一定知名度的四个左右中,没有一个比sshpass
. 这是一天的工作,旨在解决特定的极端案例。我知道它比我最初预期的要有用得多,但是如果可以选择公钥身份验证,我真的看不出任何使用它的意义。