将密码传递给“hg pull”

将密码传递给“hg pull”

我真的很困惑。我对 Linux 还很陌生,但我仍然在尝试

hg pull ssh://[email protected]/repo

在 VPS 上通过笔记本电脑上的 Python 中的 Paramiko 进行操作。我已经将公共 SSH 密钥添加到 Bitbucket,将私有密钥添加到 id_rsa。当我手动(在命令行中)发出上述命令时,系统会要求我输入密钥的密码。无论出于什么原因,它都不会通过 Paramiko 接受标准输入。因此,作为一种解决方法,我决定简单地执行

echo 'passphrase\n' | hg pull ssh://[email protected]/repo

但即使在命令行中它也无法工作,并不断询问“输入密钥‘/home/droplet/.ssh/id_rsa’的密码”。我也试过了

hg pull ssh://[email protected]/repo <<< 'passphrase\n'

结果相同。您能解释一下原因吗?我希望这些命令提供“hg pull”在要求用户输入时将使用的输入。

答案1

您应该熟练使用sshpass以下工具:

sshpass -p passphrase hg pull ssh://[email protected]/repo

或者将密钥存储到您的ssh-agent之前(请注意,如果代理未运行,则需要使用启动它eval $(ssh-agent)):

ssh-add /home/droplet/.ssh/id_rsa

那么hg pull就不应该询问该密钥的密码。

相关内容