我真的很困惑。我对 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
就不应该询问该密钥的密码。