Tortoisegit询问密码


84

我刚刚开始研究Git。我使用Windows 7,并安装了msysgit(1.7.8)和Tortoisegit(1.7.6)。该存储库在可通过LAN访问的Linux服务器上创建。我面临的问题是我无法使用Tortoisegit克隆存储库,它要求输入密码,而且不确定要输入什么密码。同时,我可以使用Git Gui克隆存储库并执行所有操作。有人可以帮我了解为什么当Git Gui不要求Tortoisegit询问密码时。我尝试卸载Git和Tortoisegit,然后再次安装,但没有成功。

Tortoisegit错误


您的git服务器正在使用pubkey auth?
菲利克斯·颜

在仓库的相同克隆上,TortoiseGit在做什么,Git GUI在做什么?
manojlds 2012年

2
右键单击Tortoise Git时,单击设置。在Git上,有一个链接-> Remote,单击它。从远程列表中单击来源。在右侧,您将看到URL。而不是URL上的用户名,而是:username:<您的密码>。最后,当您从Tortoise Git中执行git操作时,您将看到它从不询问您密码。
kamaci 2013年

1
您使用的是http URI而不是SSH?那就是我的问题
CAD冲击了

对于我们中间的“特殊对象”(包括我在内),请记住先删除命令前面的“ git clone”位,然后再将其粘贴到Tortoise Git Clone窗口的URL窗口中-否则会遇到类似的问题
icc97

Answers:


131

我的同事解决了这个问题。脚步:

  1. 右键单击-> TortoiseGit->设置->网络
  2. SSH客户端指向 C:\Program Files\TortoiseGit\bin\TortoisePlink.exe
  3. 路径已更改为 C:\Program Files (x86)\Git\bin\ssh.exe

替代路径: C:\Users\...\AppData\Local\Programs\Git\usr\bin\ssh.exe


它适用于我的乌龟1.8.3版...这个问题让我发疯了!在WindowsXP @ 32位上,tortoisegit仅与Windows7 @ 64上的c:\ programmi \ git \ bin \ ssh.exe一起使用,与toirtoiseplink.exe完美配合(默认)
Evilripper 2013年

在我的Windows 8计算机上,当根本不显示密码查询时,将SSH客户端指向msysGit ssh.exe文件即可。一个不同的问题,但是对于TortoiseGit遇到ssh问题的人,此解决方案绝对值得尝试
Icermann 2013年

1
对我来说,这没有帮助(至少在连接到GitHub时,我没有尝试其他存储库)。
苏马(Suma)

2
谢谢,做得很好。虽然我的ssh.exe谎言在我的用户目录C:\Users\...\AppData\Local\Programs\Git\usr\bin
ppasler

7
如@ppasler所述,ssh.exe现在位于C:\ Program Files(x86)\ Git \ usr \ bin \ ssh.exe或他提到的位置,具体取决于安装。
弗拉德·施纳科夫斯基(Flad Schnakovszki)

33

如果您需要使用用户名/密码,那么有比当前第二个答案简单得多的解决方案:

Right-click --> Tortoise Git --> Settings --> Git --> Credential --> Choose "Wincred, all Windows users" --> Hit apply

下次输入存储库密码时,该密码将自动保存。


如果您使用的是需要SSH密钥而不是用户名/密码的存储库(这听起来像是OP的原始问题),则需要

  1. 在PuTTY gen中打开SSH密钥(与Tortoise Git一起安装)
  2. 在PuTTY gen中,将密钥另存为PuTTY密钥。
  3. 在存储库中,Right-click --> Tortoise Git --> Settings --> Git --> Remotes。找到您的遥控器(通常是“原始”),然后从步骤2中加载PuTTY密钥。

就我而言,这仅在使用用户名时有效。当您输入用户的电子邮件地址时,它不起作用,因此请记住这一点。
拉兹

3
这是最简短,最清晰的答案,谢谢。
Alphas Supremum

一直在寻找这个确切的答案!
NielW '18年

23

不用钥匙就能做...

右键单击您的文件夹
选择tortoiseGit-> settings-> Git-> Remote
Select原点(或标有主遥控器的任何原点)

在URL下使用此格式。

Https://用户名:PASSWORD @ URL

其中USERNAME是您的用户名
:冒号分隔用户名和密码,并且必须在其中
PASSWORD是您的密码
@用
URL分隔凭据URL URL是用于连接到.git资源的URL。

感谢Kamaci


3
该解决方案也可以使用密钥。克隆Https:// USERNAME @ URL,就可以了。
Orace

2
是的,除了不要这样做,因为在进行合并时,TortoiseGit倾向于将整个URL放入提交消息中!
mwardm

这是完美的解决方案。但是有没有办法隐藏密码,因为它是纯文本格式。
阿米特·库玛

1
如果密码包含@符号怎么办?
哈马德·达尔

我求助于这个答案,因为我有mingw64,并且得到了以下日志:跳过命令行'“ C:\ Program Files \ Git \ mingw64 \ bin \ .. \ usr \ bin \ bash.exe”('C: \ Program Files \ Git \ mingw64 \ bin \ .. \ usr \ bin \ bash.exe')需要有效的命令行;相应地编辑字符串资源(3x)错误:无法执行提示脚本(退出代码1)
RW4

14

使用TortoiseGit保存用户名和密码

在TortoiseGit中保存您的登录详细信息非常容易。无需在每次拉动或推入时都输入用户名和密码。

  1. 创建一个名为_netrc的文件,其内容如下:

    机器github.com
    登录yourlogin
    密码yourpassword

  2. 将文件复制到C:\ Users \(或其他位置;这恰好是我放置的位置)

  3. 转到命令提示符,键入setx home C:\ Users \

注意:如果您使用的是Windows 7之前的版本,则setx命令可能对您不起作用。使用set代替,并通过“我的电脑”下的“高级设置”将家庭环境变量添加到Windows。

致谢:http : //www.munsplace.com/blog/2012/07/27/saving-username-and-password-with-tortoisegit/


1
它的工作原理很好,但是有没有办法加密普通密码呢?我将github密码存储在纯文本文件中感到不舒服。
Dio Phung

@DioPhung想想你刚才说的话。如果密码已加密,您现在需要记住一个(新)密码才能使用该密码。如果您不必记住密码,那么和没有密码一样(从本地威胁角度来看)。您想要方便还是安全。
卡米洛·马丁

1
@DioPhung如果您担心本地管理员,他们可以轻松地安装键盘记录程序。本地管理员可以随心所欲地处理您的数据,因此,针对这些数据的任何安全保护都是通过模糊处理来实现的安全(即使银行使用的工具和技巧也无法保护您免受知识渊博且坚定的本地管理员的侵害,尽力而为)。关于哈希,您是什么意思?哈希是不可逆的。而且,如果您使用密码本身进行加密,则仍然需要每次都键入密码...因此,它与不首先加密密码相同。
卡米洛·马丁 Camilo Martin)

1
@CamiloMartin加密不需要密码;使用系统进行身份验证的方法有很多,可能比密码更方便。安全不是全部或没有。
亚当,2015年

1
尽管可以使用此解决方案,但最好将密码存储在Windows PasswordVault中。自2013年3月以来,通过实现API git-credential-store,TortoiseGit中已提供此功能。这可能也更容易:From within repo → Context-click → TortoiseGit → Settings → Git → Credential → wincred → OK您完成了。我为有兴趣的人写了一个完整的答案
亚当2015年

5

一种方法是

  • 使用PuttyGen生成密钥对,(或者如果已经有了密钥,则导入.ppk)
  • 将私钥加载到peagent
  • 将公共密钥导入到gitosis服务器(将公共密钥提供给管理员)
  • 然后使用plink作为SSH客户端

plink与peagent一起本机工作,以检索已加载的密钥。

您可以在标准腻子分布中找到plink.exe以及peagent和其他好东西

使用它去:

TortoiseGit设置->网络-> SSH客户端。

默认情况下,此路径包含TortoisePlink.exe的路径,而不是该路径提供plink.exe的路径

或者,您可以在msys(git)发行版中使用ssh(.exe),但随后您不能使用.ppk格式/ Peagent组合的私钥。您要么需要通过PuttyGen将密钥导出为OpenSSH格式,要么使用ssh-keygen创建密钥对。


“ SSH客户端而不是TortoisePlink指向plink”是什么意思?该SSH程序可能位于哪里?
米卡·梅耶

很抱歉缺少标点符号,我认为这是造成混淆的原因。我已经更新了答案
mzzzzb 2014年

无需更改设置。当您通过SSH克隆存储库时,只需提供私有的Putty密钥即可。请记住在克隆窗口中输入SSH端点,而不要在https窗口中输入。
MoonStom 2015年

4

要自动进行验证,请使用:

  1. 其他人已经指出的SSH密钥,或者
  2. 内置的凭据帮助器。

显然,除非存储库不重要,否则不要将密码存储在文本文件中。

TortoiseGit> 1.8.1安装辅助程序git-credential-winstore,该助手提供本地API来访问您的登录信息并将其存储在现有的本地Windows Credential Store中

您可以通过以下方法查看存储的凭据:转到控制面板→用户帐户→凭据管理器,然后选择“ Windows凭据”。以“ git:”开头的条目来自git-credential-winstore。

您可以通过以下方式为每个存储库设置wincred:

(图形用户界面)

  1. 导航到“文件资源管理器”中的存储库。
  2. 右键单击→TortoiseGit→设置→Git→凭据
  3. 凭证助手:wincred-仅此存储库
  4. 下次您通过存储库进行身份验证时,将存储凭据。

(CLI,POSH)

  1. cmdkey /add:git:https://USERNAME@github.com /user:USERNAME /pass:PASSWORD
  2.  

    @"
    [credential]
            helper = wincred
    "@ | Out-File -FilePath $repoRoot\.git\config -Append
    

您可以使用cmdkey /list:git:*
“存储”列出所有为存储库存储的凭据,一旦存储,cmdkey不会显示密码(http://ss64.com/nt/cmdkey.html

要列出所有带有密码的凭据,您需要使用Windows API。对于powershell,有CredMan

. .\CredMan.ps1
.\CredMan.ps1 -ShoCred

4

我遇到过同样的问题。我的环境是带有TortoiseGit 2.3.0.0和git版本2.11.0.windows.1的Windows 10

以下解决了我的问题:

  • 右键单击-> TortoiseGit->设置->网络
  • 将SSH客户端更新到C:\ Program Files \ Git \ usr \ bin \ ssh.exe

在此处输入图片说明


3

URL和窗口标题TortoisePlink都表明乌龟正在尝试使用ssh作为传输协议。git支持多种传输协议,包括文件系统访问和ssh访问。在您的问题中,您所描述的是要通过文件系统访问来访问远程回购。在这种情况下,您的远程网址应类似于file://server/path/to/repo。请再次检查您的远程仓库URL。


3

我为解决此问题所做的工作(Windows):

  1. 打开PuttyGen导入我的ssh密钥并将其转换为腻子密钥,将公共部分和私有部分都保存在.ssh文件夹(%userprofile%.ssh)中
  2. 打开Putty并转到Connection-> SSH-> Auth,然后在此处设置您的私钥文件。
  3. 返回会话,选择默认设置,然后单击保存。
  4. 现在尝试再次克隆,您将被要求在ssh密钥上输入密码,输入密码即可。

2

Pramodtech的回答对我当前的官方Windows Git客户端版本不再起作用。它存储ssh可执行文件Git\usr\bin而不是Git\bin现在(自2015年8月发布2.5版以来)。

因此,转到TortoiseGit > Settings > Network并将SSH客户端路径更改为:

C:\Program Files\Git\usr\bin\ssh.exe (或任何Git安装路径)

在此处输入图片说明


1

不幸的是,在装有Windows 8的计算机上,重新指向SSH客户端的解决方案不起作用。为我解决了问题的解决方案在这里:http : //www.munsplace.com/blog/2012/07/27/saving-username-and-password-with-tortoisegit/


请只是不要发布链接以添加一些上下文:meta.stackexchange.com/questions/8231/…– icc97 2013
6

这是安东尼·基恩(Anthony Keane)上面给出的相同答案。
rakensi

1

由于这里提供的所有解决方案都不适合我,并且在对解决方案感到失望之后,我在网上找到了,我终于设法将其修复在我的机器上。

我不知道何时或如何将TortoiseGit油灰设置为始终使用一个特定的密钥,并且当我尝试使用新的密钥对连接到其他服务器时,这当然会引起所有问题。

因此,如何解决问题以及如何确定您是否确实遇到了与我相同的问题:

  1. plink.exe这里下载到您的机器上
  2. 在下载目录的同一目录中打开Windows命令提示符 plink.exe
  3. 运行以下命令: plink -v <path_to_your_git_clone_repo_link>
  4. 查看输出,看看是否有像这样的行 Reading private key file "C:\Path\To\Some\privateKey.ppk"
  5. 如果您看到这样的行,并且它不是您要使用的腻子密钥文件,则只需转到并重命名/删除/移动该文件,以便plink下次无法加载该文件
  6. 重命名有问题的文件后,它应该可以按预期运行,如果您从第3点开始运行命令,则应该看到plink现在无法加载该ppk文件,之后它应该输出类似的内容,Pageant is running. Requesting keys.而我们实际上希望这样做

就是这样,如果有人知道如何禁用此“全局默认油灰键”,请在评论中让我知道,我将使用信息更新此答案。


1

请不要将回购远程源的URL引起此问题。我有一个旧的仓库,可以很好地工作,还有一个我刚刚克隆的仓库,它要求我输入密码。

在比较了其中的信息后,Settings > Git > Remote > Url我看到了一个有用的信息:

git@github.com:githubAccount/repoName.git

新的不起作用的有一个 https地址。

请同时参见下面的屏幕截图。

在此处输入图片说明


1

一旦将私钥和公用密钥放在C:\ Users \ .ssh目录中,Tortoise GIT DOS命令行便停止询问密码。我在Windows 7上。


1

有同样的问题。就我而言,没有密码可以输入。该连接已配置为SSH,但没有为回购定义任何密钥。

签出:TortoiseGIT SSH配置。这些说明适用于cloudforge,但是对于其他服务,您必须执行相同的操作,只需将您的公共密钥提供给git存储库提供程序即可。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.