有时使用git
时出现问题。
当我使用命令git pull origin my_branch
或git fetch
或git push origin my_branch
时,git总是要求密码短语。我不明白为什么?
我希望有人能够解释原因以及每次避免输入密码的方法。
$ git fetch
Enter passphrase for key '/home/khanhpn/.ssh/id_rsa':
答案 0 :(得分:49)
像Nasreddine所说,这是因为你的密钥是用密码加密的,以防止其他人阅读它。
使用密码密钥的最方便方法是使用ssh-agent
启动身份验证代理(在后台运行):
$ eval "$(ssh-agent)"
Agent pid 44304
...然后使用ssh-add
向代理注册您的密钥,以便它自动用于后续的SSH连接:
$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/khanhpn/.ssh/id_rsa:
当您运行ssh-add
时,系统会要求您输入密码,但在ssh-agent
运行时您不需要再次输入密码。
您可以找到更多信息on GitHub。另请注意,每次登录时都必须执行此操作,因此您可能希望将eval "$(ssh-agent)"
步骤添加到.profile
脚本中。
答案 1 :(得分:9)
这是因为您的私人SSH密钥使用密码保护。您可以使用此命令将其删除(不推荐,因为任何人都可以复制您的密钥并使用它来访问您的存储库/帐户):
$ ssh-keygen -p
Enter file in which the key is (/path/to/your/.ssh/key):
在此处提示时输入您当前的密码:
Enter old passphrase:
Key has comment 'rsa w/o comment'
如果要在此处提示时删除密码,请保留为空:
Enter new passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved with the new passphrase.