为什么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。
- 按照指示安装msysgit和PuTTY。
- (可选)将PuTTY添加到您的path。 (如果不这样做,那么下面任何对PuTTY命令的引用都必须以适当的可执行文件的完整path作为前缀。)
- 如果你还没有这样做,那么按照GitHub的指示或按Git主机的指示生成密钥哈希。
- 同样,如果您还没有这样做,请使用puttygen.exe将您的密钥转换为使用PuTTY的pageant.exe。 说明在PuTTY的文档中,在这个有用的指南和networking空间的其他几个地方。
- 运行PuTTY的pageant.exe ,打开你的.ppk文件(“添encryption钥”),并为你的密钥提供密码。
-
访问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可能会导致麻烦。
-
打开命令提示符。
-
如果您尝试连接到Github.com托pipe的git存储库,则运行以下命令:
plink.exe git@github.com
如果您尝试连接的git存储库位于其他位置,请将git@github.comreplace为适当的用户名和URL。 (假设Github)你应该被告知服务器的主机密钥没有被caching,并且询问你是否信任它。 用y回答。 这会将服务器的主机密钥添加到PuTTY的已知主机列表中。 没有这一步git命令将无法正常工作。 点击进入后,Github通知你,Github不提供shell访问。 这很好,我们不需要它。 (如果您连接到其他主机,并且它允许您访问shell,那么最好不要做任何事情就终止链接。)
- 全做完了! Git命令现在应该从命令行工作。 您可能希望让pageant.exe 在启动时自动加载.ppk文件 ,具体取决于您需要的频率。
第二种解决scheme假设Windows,msysgit和TortoiseGit。
TortoiseGit附带PuTTY可执行文件,以及一个专门修改版本的plink(称为TortoisePlink.exe),这将使事情变得更容易。
- 按照说明安装msysgit和TortoiseGit。
- 如果你还没有这样做,那么按照GitHub的指示或按Git主机的指示生成密钥哈希。
- 再次,如果你还没有这样做,使用TortoiseGit的puttygen.exe转换您的密钥使用TortoiseGit的pageant.exe。 说明在PuTTY文档中,在第一个解决scheme中链接的有用指南以及networking空间中的其他几个地方。
- 运行TortoiseGit的pageant.exe ,打开你的.ppk文件(“添encryption钥”),并为你的密钥提供密码。
-
访问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可能会造成麻烦。
-
全做完了! Git命令现在应该从命令行工作。 您第一次尝试连接到您的git存储库时,您可能会被告知服务器的主机密钥没有被caching,并询问您是否信任该服务器。 点击“是”。 (这是TortoisePlink.exe的行动。)
您可能希望让pageant.exe 在启动时自动加载.ppk文件 ,具体取决于您需要的频率。
第三种解决scheme假设Window,msysgit和本机命令提示符。
- 安装msysgit
- 确保允许在MS-DOS命令提示符下使用git
- 运行
start-ssh-agent
- inputSSH密码
- 全做完了! Git命令现在应该在本地命令提示符下工作。
对于需要更详细说明的人员,请参阅此页面: http : //help.github.com/working-with-key-passphrases/
这不是混帐,这是ssh。
我不会做windows,但是ssh有一个可以记住密码的代理概念。 OS X默认启用了此function。 你的SSH客户端可能有一个方法来configuration这个。
问题发布后的5年,8个月和6天之后,还有一个额外的解决scheme不会是一个坏主意。
注意:假定您正在使用Windows计算机。
- 下载git-credential-winstore 。
- 运行! 如果你在你的
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