【问题标题】:Invalid SSH keys on GitKrakenGitKraken 上的 SSH 密钥无效
【发布时间】:2017-04-29 22:16:23
【问题描述】:

我找到了 GitKraken,它看起来很酷,而且我从来没有遇到过与 SourceTree 不同的 index.lock 问题。唯一的问题是我无法推拉到另一个房间的服务器。我已经配置了我的 ssh 密钥和那个。我可以推/拉到 github/bitbucket 帐户,但不能推/拉到隔壁房间。如果您遇到过这样的问题,或者您对我如何解决我的问题有一点点想法,请告诉我。我已经与支持团队取得联系,但回复很少。

【问题讨论】:

标签: git gitkraken


【解决方案1】:

在我的 Mac 上,如果我不运行 ssh-add -k ~/.ssh/id_rsa,我会收到关于 ssh 密钥错误的错误。

这似乎也适用于 Ubuntu (18.04)。

【讨论】:

  • 在 Ubuntu 18.04.1 上为我工作谢谢。
  • 我每次在 GitKraken 中都必须这样做。知道如何避免它吗?也许创建一个没有密码的密钥?
  • .bash_profile alias shitkraken="ssh-add -k ~/.ssh/id_rsa" 不客气。
  • 或者你可以把ssh-add -K ~/.ssh/id_rsa放在你的~/.bash_profile里面,它会自动加载
  • 使用大写字母 K 为我修复了它。
【解决方案2】:

已经有很多答案了,我认为其中大部分都非常有帮助。我仍然会在这里添加更多信息,因为我认为任何答案都无法真正解决问题。

这就是我从一开始就坐在 MacOS 上解决它的方法。

  1. 运行ssh-keygen 生成密钥。我确实提供了密码。
  2. 运行 ssh-add -K ~/.ssh/id_rsa 以将我的身份保存在本地 ssh 代理中。 这很重要。注意这里是大写的-K,意思是我也想把我的密码存储在本地ssh代理里面,这会导致它变成store my passphrase in the keychain所以我不需要一直重新输入,非常整洁!
  3. Inside Gitkraken,转到“首选项 -> 身份验证... -> 常规”
  4. 选中“使用本地 SSH 代理”。这将告诉 Gitkraken 在第 2 步中使用我的代理。如果您不这样做,那么 Gitkraken 将使用它自己的捆绑 ssh 代理,我认为这是导致大多数人出现问题的原因
  5. 将您的 ~/.ssh/id_rsa.pub 公钥添加到您的服务器(bitbucket.org、azure devops、github 或 w/e)。
  6. 现在,当您从终端执行 git fetch 或从 Gitkraken 执行 git fetch 时,它应该都可以工作。 Gitkraken 将使用我们配置的您的计算机自己的 ssh 代理来成功验证我们的身份。

希望这会有所帮助。

更新:我还必须在我的 ~/.bash_profile 中包含 ssh-add -K ~/.ssh/id_rsa 以使其自动加载,否则您必须在每次计算机重新启动时运行该命令。

【讨论】:

    【解决方案3】:

    在 macOS 上,我有一个私钥/公钥对,GitKraken 成功地使用它来推送到 bitbucket 存储库。 公钥文件 ~/.ssh/id_rsa.pub 格式类似于 Josh Patterson 的回答:

    ssh-rsa AAAAB3NzaC1yc2...8swZ0Ew==
    

    我创建了第二个 bitbucket 存储库。 在某些时候 gitKraken 无法再推送到第一个 repo。 我仍然可以从终端命令行 git push 到第一个 repo,手动输入密码。

    GitKraken 说“配置的 SSH 密钥格式无效。请确保您的密钥有效并且是 RSA 类型的密钥。”

    类似于 Coming Sun 的回答,我去了 GitKraken Preferences/Authentication/General。 与 Coming Sun 的回答不同,我已经有一个私钥/公钥,并且不想生成一个新对。 相反,我选择了“使用本地 SSH 代理”。这为我修复了 GitKraken。

    【讨论】:

    • “使用本地 SSH 代理”身份验证设置对我有用,谢谢。
    • 只有在系统重启后我在终端中调用 ssh-add 时它才对我有效。
    • 您的答案对我有用,但我已经选择了“使用本地 SSH 代理”。我取消勾选它,它自动选择了我已经拥有的 SSH 密钥,现在它工作正常。去图:)
    • 我猜 Gitkraken 比你本地的 ssh 代理更挑剔。换句话说 - 您的密钥确实是正确的,但只有您的本地 ssh 代理可以处理您的密钥的格式。
    【解决方案4】:
    1. GitKraken -> 首选项 -> 身份验证 -> 生成新的私钥/公钥;
    2. 将新公钥添加到您的 git 服务器。

    【讨论】:

    • 遇到同样的问题。尝试使用现有的公钥/私钥对文件,它只是说它们是无效格式。
    【解决方案5】:

    我通过结合使用 gabeios 答案以及打开和关闭“使用本地 ssh 代理”选项(gitkraken 首选项>身份验证>“使用本地 ssh 代理”)来让我的工作。

    我将其关闭并尝试了 gabeios answer,但它不起作用,但随后将其打开并再次尝试使用 gabeios answer。出于某种原因,两者的某种组合对我有用。我在mac上。希望对您有所帮助。

    【讨论】:

    • 除此之外,我还必须单击 GitKraken > Preferences > Authentication > General 中的Generate 绿色按钮来创建新密钥并配置 GitKraken 以使用他们。这样,它终于奏效了。
    【解决方案6】:

    因此,如果这有助于其他人(或者一旦我忘记了),GIT Kraken 似乎对其公钥格式非常挑剔,并且不支持我对标准格式的看法。我通常看到的键看起来像:

    ---- BEGIN SSH2 PUBLIC KEY ----
    Comment: "rsa-key-20181204"
    AAAAB3NzaC1yc2EAAAABJQAAAQEA5kpsxjtSZ4kMyKIBy0ASQShN/BSAEa7d4lrL
    ...
    hA2TX0L2fLKDkpzCngkDgGbLDxj5dXTN4gpnZdr7lzMciFQu0uhfTLmeYgi1nFOi
    KfJ+cQWg3uOHQ0zd8/2GyvfARWy3nZDFoLSQTrbErkX8swZ0Ew==
    ---- END SSH2 PUBLIC KEY ----
    

    Git Kraken 似乎坚持这种格式:

    ssh-rsa AAAAB3NzaC1yc2...8swZ0Ew==
    

    您可以看到这是“相同”的密钥,但它需要采用更简单的格式才能让 Git Kraken 满意。

    谢谢,乔希

    【讨论】:

    • 我在 GitKraken 中遇到 Base64 错误,按照此处所述更改公钥已为我修复。
    【解决方案7】:

    首选项...> 身份验证

    我只需要切换到

    [ ] 使用本地 SSH 代理

    而不是使用我本地 ssh 的路径

    【讨论】:

      【解决方案8】:

      gabeio 的回答有效。为了避免每次在终端调用ssh-add -K ~/.ssh/id_rsa,可以将其添加到配置文件中。

      你可以发到~/.bash_profile:

      ssh-add -K ~/.ssh/id_rsa 放入你的~/.bash_profile

      但需要打开终端才能执行此行。

      就我而言,我将其添加到/etc/profile。在/etc/profile 的底部添加行ssh-add -K ~/.ssh/id_rsa。以下是终端中的说明:

      • 更改文件的权限,$sudo chmod 644 /etc/profile
      • 编辑文件,$sudo nano /etc/profile
      • 在文件底部添加这一行,ssh-add -K ~/.ssh/id_rsa
      • 关闭并保存文件
      • 重启。

      它对我有用,无需每次都打开终端。希望对您有所帮助。

      【讨论】:

        【解决方案9】:

        如果您尝试访问 Github 中的存储库,但它不起作用。

        这对我有用:

        首先,查看您的存储库中是否有“写入权限”

        (Setting -> Manage Access)
        

        如果错误仍然存​​在:

        1. 在 Gitkraken 中断开 Github 帐户

          (File-> Preferences -> Authentication -> Github -> Disconnect)

        2. 在 Github 中撤销对 Gitkraken 的访问

          (Settings-> Applications -> Authorized Oauth Apps -> Gitkraken -> Revoke)

        3. 再次将 Gitkraken 连接到 Github

          (make sure that you give permission to all your repositories)

        希望对你有帮助:)

        【讨论】:

        • 这正是我在 Windows 上使用 GitKraken 所需要的
        【解决方案10】:

        我有很多用于多个项目的密钥,并且我已经在 ~/.ssh/config 和/或 ~/.gitconfig 中很好地管理了身份,我不想在另一个地方跟踪/引用它们!

        到目前为止,大多数有效的答案都需要在~/.ssh/config 中包含我的键和定义,然后在~/.bash_profile 和/或~/.profile 中添加对ssh-add -K ~/.ssh/... 的引用/调用,这都不理想。

        我正要创建一个函数来插入~/.bash_profile 和/或~/.profile 以遍历~/.ssh/*/... 中的所有键和子文件夹,所以至少我不需要记住在那里添加新键。

        然后我找到了this beautiful approach here,我需要做的就是在~/.ssh/config 中添加一个额外的AddKeysToAgent yes 指令,用于我希望自动添加到ssh-agent 的任何凭据:

        Host *
          AddKeysToAgent yes
          UseKeychain yes
          IdentityFile ~/.ssh/[your-secure-ssh-key-name]
        

        注意:这仍然需要您至少运行一次ssh-add -K ~/.ssh/[your-secure-ssh-key-name] 以将密码存储在您的钥匙串中。否则,您可以省略UseKeychain yes,并且在使用密钥时会提示您输入密码。

        这将在重新启动后持续存在,并且对 CLI 以及 GitKraken 等应用程序“神奇地工作”。

        当密钥没有密码时,UseKeychain yes 指令也可以省略,您不需要将此指令应用于所有主机。下面是一个带有子域通配符的特定主机示例,用于捕获由同一提供商托管的多个项目:

        Host project1.myrepo.com
         User git
         PreferredAuthentications publickey
         IdentityFile ~/.ssh/myrepo.com/project1
         AddKeysToAgent yes
         UseKeychain no
        
        Host *.myrepo.com
         User git
         PreferredAuthentications publickey
         IdentityFile ~/.ssh/myrepo.com/[your-secure-ssh-key-name]
         AddKeysToAgent yes
         UseKeychain yes
        
        Host git-codecommit.*.amazonaws.com
         User ABC1234DEFGHI1234
         IdentityFile ~/.ssh/[your-secure-ssh-key-name]
         AddKeysToAgent yes
        
        Host *
          AddKeysToAgent no
          UseKeychain no
          IdentityFile ~/.ssh/id_rsa
        

        【讨论】:

          【解决方案11】:

          确保您的遥控器设置正确。 Gitkraken 将允许您通过粘贴“git clone”命令进行克隆,但它会错误地将其设置为原点

          【讨论】:

            【解决方案12】:

            在尝试了所有答案之后,即使是我自己后来再次遇到问题时也没有工作的答案,我注意到问题与 SSH 密钥无关,而是与 GitKraken UI 中的给定选项有关(最新版本)写作:7.3.2)

            即使已成功添加 SSH 密钥,尝试使用以下选项进行克隆:文件 > 克隆存储库 > 使用 URL 克隆(使用 SSH 或 HTTPS)将导致此错误:

            Clone Failed
            C:\path-to-folder Conf‌igured SSH key is invalid. Please conf‌irm that it is properly associated with your Git provider.
            

            但是...它适用于以下选项:文件 > 克隆存储库 > Bitbucket.org > 要克隆的存储库 (在帐户)

            Successfully cloned repo 'my_repo'
            

            使用 URL 克隆选项不应该无论如何都必须工作吗?

            哦,好吧……

            【讨论】:

            • 我又回来检查自己的答案。我不能给自己投票哈哈。我猜 Clone with URL 选项是反直觉的,或者它应该和另一个一样......
            【解决方案13】:

            这适用于 Windows 用户。我的配置是 Win 10,带有 GitKraken v8.2。它可能适用于其他配置,但是 ymmv。

            1. 如果尚未安装 Putty 和 Pageant,请安装它们。可以在这里找到:http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
            2. 通过转到安装文件夹并双击它来启动 Pageant。或者,打开命令提示符并输入“Pageant”
            3. 在系统托盘中,找到Pageant图标,右键单击它,然后单击“添加密钥”。将其指向您拥有的 PPK 文件。
            4. 在 GitKraken 中,转到 Preferences -> SSH 并选择“Use local SSH Agent”。它现在将使用 Pageant

            您现在应该能够使用 SSH 克隆/推送/拉取到远程服务器。对于自托管的 git 服务器,请确保使用正确的 url,格式为 ssh://{user}@{host}/{repo},其中“repo”是主机上的完整路径

            【讨论】:

              猜你喜欢
              • 2019-02-09
              • 1970-01-01
              • 1970-01-01
              • 2014-01-06
              • 1970-01-01
              • 1970-01-01
              • 2018-07-03
              • 2021-07-19
              • 2020-06-19
              相关资源
              最近更新 更多