当前位置:  开发笔记 > 编程语言 > 正文

为什么git在Windows下无法记住我的密码

如何解决《为什么git在Windows下无法记住我的密码》经验,为你挑选了7个好方法。

我刚刚开始使用git而且我无法记住我的密码我正在使用cmd.exe提升而我的git主机是github而且我已经在github上创建了一个类似于该指南的ssh密钥

但我还是得到了

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

RobertB.. 199

我意识到这个问题将在两年前出现,但我遇到了同样的问题,这里的几个答案并没有完全回答我的问题.这里有两个循序渐进的解决方案,具体取决于您是否使用TortysiseGit以及msysgit.

第一个解决方案假设Windows,msysgit和PuTTY.

    按照说明安装msysgit和PuTTY.

    (可选)将PuTTY添加到路径中.(如果不这样做,那么下面对PuTTY命令的任何引用都必须以相应可执行文件的完整路径为前缀.)

    如果您还没有这样做,那么按照GitHub上的指示或Git主机的指示生成密钥哈希.

    同样,如果您还没有这样做,请使用puttygen.exe将您的密钥转换为使用PuTTY的pageant.exe .说明在PuTTY的文档中,在这个有用的指南中,以及网络空间中的其他几个地方.

    运行PuTTY的pageant.exe,打开.ppk文件("添加密钥"),并提供密钥的密码.

    访问Windows环境变量对话框(右键单击"计算机",单击"属性",单击"高级系统设置"或"高级"选项卡,单击"环境变量").添加以下环境变量:

    GIT_SSH = C:\全\路径\到\ plink.exe

    将"C:\ full\path\to"替换为PuTTY的完整安装路径,其中找到了plink.exe.最好将其添加到"用户变量"部分.此外,请确保用于plink.exe的路径与您用于Pageant(pageant.exe)的路径匹配.在某些情况下,您可能有多个PuTTY安装,因为它可能与其他应用程序一起安装.使用一个安装中的plink.exe和另一个安装中的pageant.exe可能会给您带来麻烦.

    打开命令提示符.

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

    plink.exe git@github.com

    如果您尝试连接的git存储库托管在其他位置,请使用适当的用户名和URL 替换git@github.com.(假设Github)您应该被告知服务器的主机密钥没有被缓存,并询问您是否信任它.用y回答.这会将服务器的主机密钥添加到PuTTY的已知主机列表中.没有这个步骤,git命令将无法正常工作.点击进入后,Github通知你Github不提供shell访问权限.那很好......我们不需要它.(如果您要连接到其他主机,并且它为您提供shell访问权限,则最好在不执行任何其他操作的情况下终止链接.)

    全部完成!Git命令现在应该在命令行中运行.您可能希望pageant.exe 在启动时自动加载.ppk文件,具体取决于您需要它的频率.

第二个解决方案假设Windows,msysgit和TortoiseGit.

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

    按照说明安装msysgit和TortoiseGit.

    如果您还没有这样做,那么按照GitHub上的指示或Git主机的指示生成密钥哈希.

    同样,如果您还没有这样做,请使用TortoiseGit的puttygen.exe将您的密钥转换为与TortoiseGit的pageant.exe一起使用.说明在PuTTY的文档中,在第一个解决方案中链接的有用指南中,以及网络空间中的其他几个地方.

    运行TortoiseGit的pageant.exe,打开您的.ppk文件("添加密钥"),并提供密钥的密码.

    访问Windows环境变量对话框(右键单击"计算机",单击"属性",单击"高级系统设置"或"高级"选项卡,单击"环境变量").添加以下环境变量:

    GIT_SSH = C:\全\路径\为\ TortoisePlink.exe

    将"C:\ full\path\to"替换为TortoiseGit的完整安装路径,其中找到TortoisePlink.exe.最好将其添加到"用户变量"部分.此外,请确保您用于TortoisePlink.exe的路径与您用于Pageant(pageant.exe)的路径匹配.在某些情况下,您可能有多个PuTTY安装,因为它可能与其他应用程序一起安装.使用TortoiseGit安装中的TortoisePlink.exe和来自其他应用程序(或独立PuTTY安装)的另一个安装中的pageant.exe可能会给您带来麻烦.

    全部完成!Git命令现在应该在命令行中运行.第一次尝试连接到git存储库时,可能会通知您服务器的主机密钥未缓存,并询问您是否信任该服务器.点击"是".(这是TortoisePlink.exe的实际应用.)

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

第三个解决方案假设Window,msysgit和本机命令提示符.

    安装msysgit

    确保允许在MS-DOS命令提示符下使用git

    start-ssh-agent

    输入SSH密码

    全部完成!Git命令现在应该在本机命令提示符下工作.

以防其他人遇到这个愚蠢的错误:确保你使用SSH远程URL格式(git @ host:accountname/reponame.git)而不是HTTPS URL,否则它会继续要求输入密码...... (15认同)

第三种解决方案仅在命令提示符关闭并且仅针对该命令提示符时才起作用 - 所有其他CMD仍然要求密码短语.此外,所有其他客户端(VS,VS代码)都无法与远程git通信. (5认同)

注意:方法三已经[上传到msysgit](https://github.com/msysgit/msysgit/blob/master/cmd/start-ssh-agent.cmd),所以你只需键入`start-ssh-agent`在命令行中,以保存您的SSH密码. (4认同)

如果您同时拥有GitExtensions和TortoiseGit,每个都有自己的putty版本,请确保将**GIT_SSH**环境变量设置为您实际使用的分页符的plink路径. (3认同)


Franz.. 19

如需任何需要更详细说明的人,请参阅此页:http: //help.github.com/working-with-key-passphrases/



1> RobertB..:

我意识到这个问题将在两年前出现,但我遇到了同样的问题,这里的几个答案并没有完全回答我的问题.这里有两个循序渐进的解决方案,具体取决于您是否使用TortysiseGit以及msysgit.

第一个解决方案假设Windows,msysgit和PuTTY.

    按照说明安装msysgit和PuTTY.

    (可选)将PuTTY添加到路径中.(如果不这样做,那么下面对PuTTY命令的任何引用都必须以相应可执行文件的完整路径为前缀.)

    如果您还没有这样做,那么按照GitHub上的指示或Git主机的指示生成密钥哈希.

    同样,如果您还没有这样做,请使用puttygen.exe将您的密钥转换为使用PuTTY的pageant.exe .说明在PuTTY的文档中,在这个有用的指南中,以及网络空间中的其他几个地方.

    运行PuTTY的pageant.exe,打开.ppk文件("添加密钥"),并提供密钥的密码.

    访问Windows环境变量对话框(右键单击"计算机",单击"属性",单击"高级系统设置"或"高级"选项卡,单击"环境变量").添加以下环境变量:

    GIT_SSH = C:\全\路径\到\ plink.exe

    将"C:\ full\path\to"替换为PuTTY的完整安装路径,其中找到了plink.exe.最好将其添加到"用户变量"部分.此外,请确保用于plink.exe的路径与您用于Pageant(pageant.exe)的路径匹配.在某些情况下,您可能有多个PuTTY安装,因为它可能与其他应用程序一起安装.使用一个安装中的plink.exe和另一个安装中的pageant.exe可能会给您带来麻烦.

    打开命令提示符.

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

    plink.exe git@github.com

    如果您尝试连接的git存储库托管在其他位置,请使用适当的用户名和URL 替换git@github.com.(假设Github)您应该被告知服务器的主机密钥没有被缓存,并询问您是否信任它.用y回答.这会将服务器的主机密钥添加到PuTTY的已知主机列表中.没有这个步骤,git命令将无法正常工作.点击进入后,Github通知你Github不提供shell访问权限.那很好......我们不需要它.(如果您要连接到其他主机,并且它为您提供shell访问权限,则最好在不执行任何其他操作的情况下终止链接.)

    全部完成!Git命令现在应该在命令行中运行.您可能希望pageant.exe 在启动时自动加载.ppk文件,具体取决于您需要它的频率.

第二个解决方案假设Windows,msysgit和TortoiseGit.

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

    按照说明安装msysgit和TortoiseGit.

    如果您还没有这样做,那么按照GitHub上的指示或Git主机的指示生成密钥哈希.

    同样,如果您还没有这样做,请使用TortoiseGit的puttygen.exe将您的密钥转换为与TortoiseGit的pageant.exe一起使用.说明在PuTTY的文档中,在第一个解决方案中链接的有用指南中,以及网络空间中的其他几个地方.

    运行TortoiseGit的pageant.exe,打开您的.ppk文件("添加密钥"),并提供密钥的密码.

    访问Windows环境变量对话框(右键单击"计算机",单击"属性",单击"高级系统设置"或"高级"选项卡,单击"环境变量").添加以下环境变量:

    GIT_SSH = C:\全\路径\为\ TortoisePlink.exe

    将"C:\ full\path\to"替换为TortoiseGit的完整安装路径,其中找到TortoisePlink.exe.最好将其添加到"用户变量"部分.此外,请确保您用于TortoisePlink.exe的路径与您用于Pageant(pageant.exe)的路径匹配.在某些情况下,您可能有多个PuTTY安装,因为它可能与其他应用程序一起安装.使用TortoiseGit安装中的TortoisePlink.exe和来自其他应用程序(或独立PuTTY安装)的另一个安装中的pageant.exe可能会给您带来麻烦.

    全部完成!Git命令现在应该在命令行中运行.第一次尝试连接到git存储库时,可能会通知您服务器的主机密钥未缓存,并询问您是否信任该服务器.点击"是".(这是TortoisePlink.exe的实际应用.)

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

第三个解决方案假设Window,msysgit和本机命令提示符.

    安装msysgit

    确保允许在MS-DOS命令提示符下使用git

    start-ssh-agent

    输入SSH密码

    全部完成!Git命令现在应该在本机命令提示符下工作.


以防其他人遇到这个愚蠢的错误:确保你使用SSH远程URL格式(git @ host:accountname/reponame.git)而不是HTTPS URL,否则它会继续要求输入密码......
第三种解决方案仅在命令提示符关闭并且仅针对该命令提示符时才起作用 - 所有其他CMD仍然要求密码短语.此外,所有其他客户端(VS,VS代码)都无法与远程git通信.
注意:方法三已经[上传到msysgit](https://github.com/msysgit/msysgit/blob/master/cmd/start-ssh-agent.cmd),所以你只需键入`start-ssh-agent`在命令行中,以保存您的SSH密码.
如果您同时拥有GitExtensions和TortoiseGit,每个都有自己的putty版本,请确保将**GIT_SSH**环境变量设置为您实际使用的分页符的plink路径.

2> Franz..:

如需任何需要更详细说明的人,请参阅此页:http: //help.github.com/working-with-key-passphrases/



3> Guy Avraham..:

如果您在Windows下使用Git bash,您可以执行以下操作:

eval `ssh-agent -s`
ssh-add ~/.ssh/*_rsa

它会在第二个命令中要求传递短语,就是这样.您需要执行的每个额外操作(曾经需要密码短语)都不会要求您输入密码短语(请参阅下面屏幕截图中的示例):

在Windows上的Git bash中添加密码短语

希望能帮助到你.

干杯,

盖伊.



4> Alex Essilfi..:

问题发布后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.


此解决方案似乎不适用于SSH repos,仅适用于HTTPS./愤怒的脸

5> Dustin..:

那不是git,而是ssh.

我不做窗户,但ssh有一个代理概念,可以记住你的密码.OS X默认启用此功能.您的ssh客户端可能有一种方法来配置它.



6> Grant Limber..:

如果为密钥文件设置密码,则在连接时始终需要输入该密码.如果您创建无密码密钥,则不必每次都键入密钥,但是,任何有权访问密钥文件的人现在都可以连接到您的github帐户.

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



7> hwjp..:

[编辑 - 误读了这个问题,这是对相关问题的回答.留下后代的改写版]

我的情况是我试图推送到我们的一台服务器上托管的仓库.每当我尝试推送时,git会问我输入密码(nb - 密码,而不是密码到我的私钥).

通过将我的公钥添加到服务器上的授权密钥,我可以获得无密码推送到该服务器.并且,因为我的私钥上没有密码短语(这是不好的做法顺便说一下!)我根本不需要输入任何内容.

这是将公钥添加到服务器的命令.它假定用户git是服务器上的用户.

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

您可以通过登录服务器并手动将公钥附加到文件来实现相同的目的 ~/.ssh/authorized_keys

推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有