我刚刚开始使用git,我不能让它记住我的密码,我使用cmd.exe提升,我的git主机是github,我已经创建了一个ssh密钥,就像github上的指南

但我还是得到了

*\subnus.mvc>git push origin master
Enter passphrase for key '/c/Users/Subnus/.ssh/id_rsa':

当前回答

在问题发布5年8个月零6天后再做一个解决方案也不是什么坏主意。

注意:假设您使用的是windows计算机。

下载git-credential-winstore。 运行它!如果PATH环境变量中有GIT,它应该可以工作。如果没有,运行git-credential-winstore -i C:\Path\To\Git.exe。

下次尝试提交到存储库时,系统将提示您输入凭据。应该是这样。在您更改密码之前,您将不再被要求提供您的凭证。


只是为了让你知道…您的凭据存储在Windows凭据存储中

你把我的证件放在哪里? 这个应用程序只是使用现有的Windows凭据商店来保存您的凭据。您可以通过进入控制面板>用户帐户>凭证管理器并选择“Windows凭证”来查看存储的凭证。以“git:”开头的条目来自git-credential-winstore。

其他回答

可以尝试添加-k arg当你这样做;

ssh-add -k ~/.ssh/id_rsa

如何在Windows下正常运行SSH-Agent

现有的答案没有一个能使我满意地解决这个问题。下面是微软的建议:

以管理员权限启动powershell控制台:

按Win Win开始菜单,输入powershell,按回车键

将Windows中包含的OpenSSH添加到PATH变量中:

setx PATH "c:/Windows/System32/OpenSSH/;$Env:PATH;" 

关闭powershell终端,打开一个新的。

输入以下命令,确保openssh代理作为服务在后台运行:

# enable automatic start
Get-Service ssh-agent | Set-Service -StartupType Automatic

# start it now
Start-Service ssh-agent

现在服务应该运行,你可以检查通过

Get-Service ssh-agent

将您的私钥加载到ssh-agent中,例如:

ssh-add $env:USERPROFILE/.ssh/id_rsa

来源:https://learn.microsoft.com/en-us/windows-server/administration/openssh/openssh_keymanagement user-key-generation

现在您应该可以使用您的私钥,而不必每次都输入密码。

我意识到这个问题已经拖延了好几年,但我无意中发现了这个问题,试图找到一个解决方案,我发现了一些适合所有专业水平的东西,所以我想我应该分享一下。

GitHub提供了一个非常有用的安装程序,使一切都很好很简单:https://help.github.com/articles/caching-your-github-password-in-git/

你可以在你的用户的主目录下创建一个。bashrc文件,比如C:/Users/youruser,然后放在那里:

env=~/.ssh/agent.env

agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }

agent_start () {
    (umask 077; ssh-agent >| "$env")
    . "$env" >| /dev/null ; }

agent_load_env

# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)

if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
    agent_start
    ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
    ssh-add
fi

unset env

该脚本在每次bash运行后执行。因此,当git-bash启动时,您只需要输入一次密码!

某些版本的bash需要.bash_profile文件而不是.bashrc,所以以防万一克隆。bashrc:

copy .bashrc .bash_profile

对于任何需要更详细说明的人,请参阅本页: https://docs.github.com/authentication/connecting-to-github-with-ssh/working-with-ssh-key-passphrases