Fabric git push 要求输入密码,但命令行版本没有

问题描述

如果我直接从终端运行 git push 命令,我不会收到任何密码提示(这是预期的行为):

$ git push remotename master

但是如果我在 Fabric 中运行相同的命令,我会收到密码提示

>> c.local("git push remotename master")
Enter passphrase for key '/Users/name/private/mykey'

即使我将密钥添加到 ssh 代理 (ssh-add -K ./mykey) 也会发生这种情况

如何确保 Fabric 版本不会提示我输入密码?

解决方法

首先检查本地使用的 URL:

c.local("git remote -v")

它不应要求位于“./”中的密钥,除非存在使用相对路径指定私钥的 ~/.ssh/config 文件(不是一个好习惯)。