GitKraken上的SSH密钥无效。

50

我发现了GitKraken,它看起来很酷,并且与SourceTree不同的是,我从未遇到过index.lock的问题。唯一的问题是我无法将内容推送到位于另一个房间的服务器上。我已经配置了我的ssh密钥。我可以向github/bitbucket帐户推送/拉取,但无法在隔壁房间推拉。如果你曾遇到过这样的问题,或者你有一点点关于如何解决我的问题的想法,请让我知道。我已经联系了支持团队,但回复非常少。


我仍然无法弄清楚这个。 - shaNnex
2
我在Bitbucket账号上遇到了相同的问题,从这个链接获得了解决方案:https://support.gitkraken.com/integrations/bitbucket。希望它有帮助。 - Ramesh Papaganti
16个回答

54

看起来在我的 Mac 上,如果我不运行ssh-add -k ~/.ssh/id_rsa,那么我会得到关于 SSH 密钥不良的错误。

这在 Ubuntu(18.04)上似乎也有效。


1
在我的Ubuntu 18.04.1上运行良好。谢谢。 - Lorran Pegoretti
1
我每次在GitKraken中都必须这样做。有什么办法可以避免吗?也许创建一个没有密码的密钥? - Kowboj
.bash_profilealias shitkraken="ssh-add -k ~/.ssh/id_rsa" 不用谢。 - Valstorm
3
您可以将 ssh-add -K ~/.ssh/id_rsa 直接放入您的 ~/.bash_profile 文件中,这样它就会自动加载。 - Jim Aho
使用大写字母 K 解决了我的问题。 - Rugen Heidbuchel

27
许多答案已经给出,我认为其中大部分都非常有帮助。但我仍会在此添加更多信息,因为我认为没有一个答案真正解决了问题。
以下是我解决问题的步骤,从开始,在MacOS上操作。
  1. 运行 ssh-keygen 生成密钥。我提供了一个密码。
  2. 运行 ssh-add -K ~/.ssh/id_rsa 将我的身份保存在本地 ssh 代理中。 这很重要。请注意,这是大写的-K,这意味着我想将我的密码也存储在本地 ssh 代理中,这将导致它 将我的密码存储在钥匙串中,因此我不需要一直重新输入它,非常方便!
  3. 在 Gitkraken 中, 转到 "Preferences -> authentication... -> General"
  4. 选中 "Use local SSH agent"。这将告诉 Gitkraken 使用第二步中的代理。 如果您不这样做,则 Gitkraken 将使用其自己捆绑的 ssh 代理,我认为这是大多数人遇到问题的原因
  5. 将您的 ~/.ssh/id_rsa.pub 公钥添加到您的服务器 (bitbucket.org、azure devops、github 或其他)。
  6. 现在当您从终端执行 git fetch 或者从 Gitkraken 执行 git fetch 时,都应该可以正常工作。Gitkraken 将使用您计算机自己的 ssh 代理,我们已经配置成功进行身份验证。

希望这对您有所帮助。

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


对我来说,只有在小写字母的"-K"选项下才有效,例如"ssh-add -k ~/.ssh/id_rsa"。 - Stanislav Modrák

14
在macOS上,我有一对私钥/公钥,并且GitKraken成功地使用它将代码推送到Bitbucket存储库。公钥文件~/.ssh/id_rsa.pub的格式类似于Josh Patterson的答案:

在macOS上,我有一个私钥/公钥对,GitKraken已成功使用它向Bitbucket存储库推送代码。 公钥文件~/.ssh/id_rsa.pub的格式类似于Josh Patterson的答案:

ssh-rsa AAAAB3NzaC1yc2...8swZ0Ew==

我创建了第二个Bitbucket仓库。然而,GitKraken在某一时刻无法再将代码推送到第一个仓库了。但是,我仍可以通过终端命令行手动输入密码来推送代码至第一个仓库。

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

与Coming Sun的回答类似,我进入了GitKraken首选项/身份验证/通用设置。不同之处在于我已经有了公钥/私钥,并且不想生成新的一对。相反,我选择了“使用本地SSH代理”。这为我解决了GitKraken问题。


5
“使用本地SSH代理”身份验证设置对我有用,谢谢。” - Matt Stone
只有在系统重启后,在终端中调用ssh-add,才能使它对我起作用。 - dmitry1100
1
您的回答对我很有帮助,但是我原来已经选中了“使用本地SSH代理”。我取消勾选后,它自动选择了我已有的SSH密钥,现在正常工作。这真是讽刺啊 :) - Bruno Finger
我猜Gitkraken比你的本地ssh代理更挑剔。换句话说,你的密钥确实是正确的,但只有你的本地ssh代理可以处理你的密钥格式。 - Jim Aho

11
  1. 打开 GitKraken -> 首选项 -> 身份验证 -> 生成新的私有/公共密钥;
  2. 将新的公共密钥添加到您的Git服务器中。

1
遇到了同样的问题。尝试使用现有的公钥/私钥文件,但它只是说它们是无效格式。 - Triynko

4

我通过结合gabeios的答案和打开/关闭“使用本地ssh代理”选项(gitkraken首选项 > 认证 > 'use local ssh agent')使我的工作正常运行。

我先关闭了它并尝试了gabeios的答案,但它没有起作用,然后再次打开并尝试了gabeios的答案。由于某种原因,这两种方法的结合对我起作用了。我在mac上。希望对你有所帮助。


1
除此之外,我还需要在 GitKraken > 首选项 > 认证 > 通用 中单击“生成”绿色按钮,以 _创建新的密钥并配置 GitKraken 使用它们_。这样,它最终就可以正常工作了。 - Metafaniel

4

由于之前的答案对我没用,这里有另一个可能有效的快速简单提示:

  1. 进入偏好设置/集成/GitHub。
  2. 你会找到一个名为"Gitkraken Ubuntu"的ssh密钥。
  3. 它会显示类似于"未发布"的内容 -> 点击"添加到GitHub"。

完成!您已被授权。

gitkraken github integration screenshot


3

如果这对别人有帮助的话(或者等我自己忘了再来看),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才能满意。
谢谢,Josh

我在GitKraken中遇到了Base64错误,按照此处描述的更改公钥解决了这个问题。 - Danny Parker

2

偏好设置... > 认证

我刚刚不得不切换到

[ ] 使用本地SSH代理

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


1
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”。
关闭并保存文件
重新启动。
对我而言,无需每次打开终端即可工作。希望能有所帮助。

1
如果您尝试访问 Github 中的存储库,但无法正常工作。这对我有用:首先,请检查您在存储库中是否拥有“写入权限”。
(Setting -> Manage Access)

如果错误仍然存在:
1. 在Gitkraken中断开Github帐户连接 (文件->首选项->身份验证->Github->断开连接)
2. 在Github中撤销Gitkraken的访问权限 (设置->应用程序->授权的Oauth应用程序->Gitkraken->撤销)
3. 再次将Gitkraken连接到Github (确保您允许所有存储库的权限)
希望这对您有所帮助 :)

这正是我在Windows上使用GitKraken所需要的。 - Doug Wilson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接