为什么git在Windows下不能记住我的密码

我刚刚开始使用混帐,我无法得到它记住我的密码我使用cmd.exe提升,我的git主机是github,我已经创build了一个ssh密钥,就像github上的指南

但我仍然得到

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

我意识到这个问题在两年前就已经出现了,但是我也有同样的问题,这里有几个答案并没有完全回答我的问题。 这里有两个一步一步的解决scheme,这取决于你是否使用了除了msysgit之外的TortoiseGit。

第一种解决scheme假设Windows,msysgit和PuTTY。

  1. 按照指示安装msysgit和PuTTY。
  2. (可选)将PuTTY添加到您的path。 (如果不这样做,那么下面任何对PuTTY命令的引用都必须以适当的可执行文件的完整path作为前缀。)
  3. 如果你还没有这样做,那么按照GitHub的指示或按Git主机的指示生成密钥哈希。
  4. 同样,如果您还没有这样做,请使用puttygen.exe将您的密钥转换为使用PuTTY的pageant.exe。 说明在PuTTY的文档中,在这个有用的指南和networking空间的其他几个地方。
  5. 运行PuTTY的pageant.exe ,打开你的.ppk文件(“添encryption钥”),并为你的密钥提供密码。
  6. 访问Windows的环境variables对话框(右键点击“计算机”,点击“属性”,点击“高级系统设置”或“高级”标签,点击“环境variables”)。 添加以下环境variables:

    GIT_SSH = C:\全\path\到\ plink.exe

    将完整的安装pathreplace为“C:\ full \ path \ to”,findplink.exe的PuTTY。 最好将它添加到“用户variables”部分。 另外,请确保您用于plink.exe的path与用于Pageant(pageant.exe)的path相匹配。 在某些情况下,您可能会安装多个PuTTY,因为它可能与其他应用程序一起安装。 从一个安装使用plink.exe,从另一个安装pageant.exe可能会导致麻烦。

  7. 打开命令提示符。

  8. 如果您尝试连接到Github.com托pipe的git存储库,则运行以下命令:

    plink.exe git@github.com

    如果您尝试连接的git存储库位于其他位置,请将git@github.comreplace为适当的用户名和URL。 (假设Github)你应该被告知服务器的主机密钥没有被caching,并且询问你是否信任它。 用y回答。 这会将服务器的主机密钥添加到PuTTY的已知主机列表中。 没有这一步git命令将无法正常工作。 点击进入后,Github通知你,Github不提供shell访问。 这很好,我们不需要它。 (如果您连接到其他主机,并且它允许您访问shell,那么最好不要做任何事情就终止链接。)

  9. 全做完了! Git命令现在应该从命令行工作。 您可能希望让pageant.exe 在启动时自动加载.ppk文件 ,具体取决于您需要的频率。

第二种解决scheme假设Windows,msysgit和TortoiseGit。

TortoiseGit附带PuTTY可执行文件,以及一个专门修改版本的plink(称为TortoisePlink.exe),这将使事情变得更容易。

  1. 按照说明安装msysgit和TortoiseGit。
  2. 如果你还没有这样做,那么按照GitHub的指示或按Git主机的指示生成密钥哈希。
  3. 再次,如果你还没有这样做,使用TortoiseGit的puttygen.exe转换您的密钥使用TortoiseGit的pageant.exe。 说明在PuTTY文档中,在第一个解决scheme中链接的有用指南以及networking空间中的其他几个地方。
  4. 运行TortoiseGit的pageant.exe ,打开你的.ppk文件(“添encryption钥”),并为你的密钥提供密码。
  5. 访问Windows的环境variables对话框(右键点击“计算机”,点击“属性”,点击“高级系统设置”或“高级”标签,点击“环境variables”)。 添加以下环境variables:

    GIT_SSH = C:\全\path\为\ TortoisePlink.exe

    用完整安装pathreplace“C:\ full \ path \ to”,findTortoisePlink.exe的TortoiseGit。 最好将它添加到“用户variables”部分。 另外,请确保您用于TortoisePlink.exe的path与用于Pageant(pageant.exe)的path相匹配。 在某些情况下,您可能会安装多个PuTTY,因为它可能与其他应用程序一起安装。 使用TortoiseGit安装中的TortoisePlink.exe和另一个不同应用程序(或独立PuTTY安装)的另一安装中的pageant.exe可能会造成麻烦。

  6. 全做完了! Git命令现在应该从命令行工作。 您第一次尝试连接到您的git存储库时,您可能会被告知服务器的主机密钥没有被caching,并询问您是否信任该服务器。 点击“是”。 (这是TortoisePlink.exe的行动。)

    您可能希望让pageant.exe 在启动时自动加载.ppk文件 ,具体取决于您需要的频率。

第三种解决scheme假设Window,msysgit和本机命令提示符。

  1. 安装msysgit
  2. 确保允许在MS-DOS命令提示符下使用git
  3. 运行start-ssh-agent
  4. inputSSH密码
  5. 全做完了! Git命令现在应该在本地命令提示符下工作。

对于需要更详细说明的人员,请参阅此页面: http : //help.github.com/working-with-key-passphrases/

这不是混帐,这是ssh。

我不会做windows,但是ssh有一个可以记住密码的代理概念。 OS X默认启用了此function。 你的SSH客户端可能有一个方法来configuration这个。

问题发布后的5年,8个月和6天之后,还有一个额外的解决scheme不会是一个坏主意。

注意:假定您正在使用Windows计算机。

  1. 下载git-credential-winstore 。
  2. 运行! 如果你在你的PATH环境variables中有GIT,它应该可以工作。 如果你不这样做,运行git-credential-winstore -i C:\Path\To\Git.exe

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


只是为了您的知识…您的凭据存储在Windows凭据存储中

你在哪里存储我的凭证?

这个应用程序只是使用现有的Windows凭据存储保存您的凭据。 您可以通过控制面板>用户帐户>凭证pipe理器并select“Windows凭据”来查看存储的凭证。 开始“git:”的条目来自git-credential-winstore。

误解了这个问题,这是一个相关问题的答案。 留给后人改写的版本]

我的情况是,我试图推动一个在我们的服务器上托pipe的回购。 每当我试图做推,git会问我的密码(NB – 密码,而不是我的私钥密码)。

通过将我的公钥添加到服务器上的授权密钥,我能够获得无密码的推送到该服务器。 而且,因为我的私钥没有密码 (这是不好的做法btw!)我根本不需要input任何东西。

以下是将您的公钥添加到服务器的命令。 它假定用户git是服务器上的用户。

 cat .ssh/id_rsa.pub | ssh git@GIT_MASTER_IP 'cat >> .ssh/authorized_keys' 

login到服务器上,然后手动将公钥添加到~/.ssh/authorized_keys文件即可实现同样的function

如果您为密钥文件设置密码,则连接时始终需要input该密码。 如果您创build了一个无密码的密钥,那么您不必每次input它,但是,任何有权访问密钥文件的人现在都可以连接到您的github帐户。

ssh-agent也可能工作。 尝试运行,看看它是否会记住你的密码。

如果您不介意以明文forms存储密码,并使用TortoiseGit,则可以使用更简单的解决scheme解决此问题。

只需在用户个人资料目录中创build一个_netrc文件 – 即在Windows 7中,它将是C:\Users\MyName\_netrc 。 该文件将以这种格式存储您的login信息:

 machine bitbucket.org login thisismyname password p455w0rD machine bitbucket.org login another_account password pwdpwdPWd machine github.com login thisismynameagain password p455w0rD 

我使用TortoisePLink作为一个SSH客户端,它的工作完美无瑕。

我意识到这已经过了好几年了,但是我偶然发现了这个问题,试图find一个解决scheme,我发现了一些适合所有层面的专业知识,所以我想我会分享。

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

可以尝试添加-k arg;

 ssh-add -k ~/.ssh/id_rsa