【问题标题】:Tortoisegit asking passwordTortoisegit 询问密码
【发布时间】:2012-02-09 10:39:25
【问题描述】:

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

【问题讨论】:

  • 您的 git 服务器正在使用 pubkey 身份验证?
  • 在相同的 repo 克隆上,TortoiseGit 在做什么以及 Git GUI 在做什么?
  • 当你右键单击 Tortoise Git 时,单击设置。在 Git 中,有一个链接 -> Remote,单击它。从远程列表单击来源。在右侧,您将看到 URL。而不是您在 URL wright 上的用户名:用户名:。最后,当您从 Tortoise Git 进行 git 操作时,您会发现它从不询问您的密码。
  • 您使用的是 http URI 而不是 SSH?那是我的问题
  • 对于我们当中的“特殊”(包括我在内)请记住在将命令前面的“git clone”位粘贴到 Tortoise Git 克隆窗口的 URL 窗口之前删除它 - 否则你会遇到类似的问题

标签: git version-control tortoisegit


【解决方案1】:

我今天遇到了类似的问题,并且能够通过https://git-scm.com/download/win 安装最新版本的 git 来解决它

【讨论】:

    【解决方案2】:

    我做了什么来解决这个问题(windows):

    1. 打开 PuttyGen 导入我的 ssh 密钥并将其转换为 putty 密钥,将公共和私有部分保存在 .ssh 文件夹中 (%userprofile%.ssh)
    2. 打开 Putty 并转到 Connection->SSH->Auth 然后在那里设置您的私钥文件。
    3. 返回会话,选择默认设置并点击保存。
    4. 现在再次尝试克隆,系统会要求您输入 ssh 密钥上的密码,输入它应该可以工作。

    【讨论】:

      【解决方案3】:

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

      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 仅适用于 c:\programmi\git\bin\ssh.exe 在 Windows7@64 上它适用于 toirtoiseplink.exe(默认)
      • 在我的 Windows 8 机器上,当密码查询根本没有出现时,将 SSH 客户端指向 msysGit ssh.exe 文件有效。一个不同的问题,但是对于使用 TortoiseGit 遇到 ssh 问题的人来说,这个解决方案绝对值得一试
      • 对我来说这没有帮助(至少在连接到 GitHub 时,我没有尝试其他存储库)。
      • 谢谢,完美运行。虽然我的ssh.exe 位于我的用户目录C:\Users\...\AppData\Local\Programs\Git\usr\bin
      • 正如@ppasler 提到的,ssh.exe 现在位于 C:\Program Files (x86)\Git\usr\bin\ssh.exe 或他提到的位置,具体取决于安装。
      【解决方案4】:

      遇到了同样的问题。就我而言,没有密码可以输入。连接配置为 SSH,但没有为 repo 定义密钥。

      查看:TortoiseGIT SSH configuration。这些说明适用于 cloudforge,但对于其他服务,您必须这样做,只需将您的公钥提供给您的 git 存储库提供商。

      【讨论】:

        【解决方案5】:

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

        以下解决了我的问题:

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

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            【解决方案7】:

            请注意,repo 远程源的 URL 不会导致此问题。我有一个运行良好的旧仓库和一个我刚刚克隆的新仓库,它要求我输入密码。

            对比Settings > Git > Remote > Url 中的信息,我发现有效的是:

            git@github.com:githubAccount/repoName.git

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

            请看下面的截图。

            【讨论】:

              【解决方案8】:

              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 安装路径)

              【讨论】:

                【解决方案9】:

                如果您需要使用用户名/密码,有一个比当前#2 答案更简单的解决方案:

                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 密钥。

                【讨论】:

                • 就我而言,这仅在使用用户名时有效。当您输入用户的电子邮件地址时它不起作用,因此请记住这一点。
                • 这是最简短最清楚的答案,谢谢。
                • 一直在寻找这个确切的答案!
                【解决方案10】:

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

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

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

                TortoiseGit >1.8.1 安装了帮助程序 git-credential-winstore,它提供了本地 API 来访问和存储您的登录信息到现有的本地 Windows Credential Store

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

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

                (图形用户界面)

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

                (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:* 列出为 repos 存储的所有凭据
                存储后,cmdkey不会显示密码(http://ss64.com/nt/cmdkey.html

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

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

                【讨论】:

                  【解决方案11】:

                  不用钥匙就能做到……

                  右键单击您的文件夹
                  选择tortoiseGit->settings->Git->Remote
                  选择来源(或您标记主遥控器的任何内容)

                  在 URL 下使用此格式。

                  https://USERNAME:PASSWORD@URL

                  在哪里 USERNAME 是您的用户名
                  : 冒号分隔用户名和密码,必须有
                  PASSWORD 是您的密码
                  @ 将凭据与您的网址分开
                  URL 是您用来连接到 .git 资源的 url

                  感谢Kamaci

                  【讨论】:

                  • 此解决方案也适用于密钥。克隆Https://USERNAME@URL,你就没事了。
                  • 是的,除非不要这样做,因为当您进行合并时,TortoiseGit 倾向于将 整个 URL 放入提交消息中!
                  • 这是完美的解决方案。但是有什么方法可以隐藏密码,因为它是纯文本的。
                  • 密码中包含@符号怎么办?
                  • 我使用了这个答案,因为我有 mingw64 并且我得到了这个日志: Skipping command-line '"C:\Program Files\Git\mingw64\bin\..\usr\bin\bash .exe"' ('C:\Program Files\Git\mingw64\bin\..\usr\bin\bash.exe' 未找到) 需要有效的命令行;相应地编辑字符串资源(3x)错误:未能执行提示脚本(退出代码1)
                  【解决方案12】:

                  由于这里提供的解决方案都不适合我,在对我在网上找到的解决方案感到非常失望之后,我终于设法在我的机器上解决了这个问题。

                  我不知道我何时或如何将我的 TortoiseGit putty 设置为始终使用一个特定的密钥,当然,当我尝试使用新的一对密钥连接到不同的服务器时,这会导致所有问题。

                  那么如何解决问题以及如何判断您是否确实遇到了与我相同的问题:

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

                  就是这样,如果有人知道我如何禁用这个“全局默认腻子键”,请在 cmets 中告诉我,我会用信息更新这个答案。

                  【讨论】:

                    【解决方案13】:

                    一种方法是

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

                    plink 原生与 peagent 一起工作以检索加载的密钥。

                    您可以在标准 putty 发行版中找到 plink.exe 以及 peagent 和其他好东西

                    使用它去:

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

                    默认情况下,它包含 TortoisePlink.exe 的路径,而不是 plink.exe 的路径

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

                    【讨论】:

                    • “SSH 客户端而不是 TortoisePlink 指向 plink”是什么意思?这个 SSH 程序可能位于哪里?
                    • 很抱歉缺少标点符号,我认为这是造成混乱的根源。我已经更新了答案
                    • 无需更改设置中的任何内容。当您通过 SSH 克隆存储库时,只需提供私有 Putty 密钥即可。请记住在克隆窗口中输入 SSH 端点,而不是 https 端点。
                    【解决方案14】:

                    用 TortoiseGit 保存用户名和密码

                    在 TortoiseGit 中保存您的登录信息非常简单。无需在每次拉取或推送时都输入用户名和密码。

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

                      机器 github.com
                      登录你的登录名
                      密码 yourpassword

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

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

                    注意:如果您使用的是 Windows 7 之前的版本,setx 命令可能不适合您。改用 set 并通过“我的电脑”下的“高级设置”将 home 环境变量添加到 Windows。

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

                    【讨论】:

                    • 它工作得很好,但是有没有办法加密纯密码?我觉得将我的 github 密码存储在纯文本文件中感到不舒服。
                    • @DioPhung 想想你刚才说的话。如果密码已加密,您现在需要记住一个(新)密码才能使用该密码。如果您不必记住密码,那就像没有密码一样好(从本地威胁的角度来看)。无论您想要方便还是安全。
                    • @DioPhung 如果您害怕本地管理员,他们可以轻松安装键盘记录器。本地管理员可以对您的数据做任何他/她想做的事情,因此,任何针对他们的安全措施都是通过默默无闻来实现的(即使银行使用的工具和技巧也无法保护您免受知识渊博和坚定的本地管理员的攻击,他们一定要努力)。关于哈希,你是什么意思?哈希是不可逆的。如果您使用密码本身进行加密,您仍然需要每次都输入它......所以它与一开始不加密它是一样的。
                    • @CamiloMartin 加密不需要密码;有许多方法可以通过系统进行身份验证,这些方法可能比密码更方便。安全不是全部或没有。
                    • 虽然此解决方案可行,但最好将密码存储在 Windows PasswordVault 中。自 2013 年 3 月以来,通过实现 API git-credential-store,TortoiseGit 就可以使用此功能。它也可能更容易:From within repo → Context-click → TortoiseGit → Settings → Git → Credential → wincred → OK,你就完成了。我为这个问题写了full answer 给那些感兴趣的人。
                    【解决方案15】:

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

                    【讨论】:

                    【解决方案16】:

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

                    【讨论】:

                      猜你喜欢
                      • 2016-06-09
                      • 2016-06-08
                      • 2014-01-17
                      • 1970-01-01
                      • 2013-12-07
                      • 2014-04-03
                      • 1970-01-01
                      • 1970-01-01
                      • 2012-04-27
                      相关资源
                      最近更新 更多