好的,所以我在另一个房间的服务器某个地方有一个git repo,我以前一直在使用SourceTree,但它对index.lock问题非常讨厌,显然这是大多数开发人员使用SourceTree时遇到的最常见问题。虽然我发现如果我等了几分钟到半天它会自行修复,但我没有时间等待,我认为它完全违背了使用git客户端的目的。
但是,这不是关于SourceTree ...所以,我发现GitKraken,它看起来很酷,我从来没有index.lock的问题。唯一的问题是我无法推送到另一个房间的服务器。我配置了我的ssh密钥。我可以推/拉到github / bitbucket帐户,但不能下一个房间。如果您遇到过这样的问题,或者您对我如何解决问题有一点了解,请告诉我。我已经与支持团队取得了联系,但反应非常紧张。
答案 0 :(得分:22)
似乎在我的Mac上,如果我没有运行ssh-add -k ~/.ssh/id_rsa
,那么我会收到关于使用错误的ssh密钥的错误。
这似乎也适用于Ubuntu(18.04)。
答案 1 :(得分:9)
在macOS上,我有一个私钥/公钥对,GitKraken成功地使用它来推送到一个Bitbucket存储库。 公钥文件〜/ .ssh / id_rsa.pub格式类似于Josh Patterson的答案:
ssh-rsa AAAAB3NzaC1yc2...8swZ0Ew==
我创建了第二个bitbucket存储库。 在某个时候gitKraken不再能够推送到第一个回购。 我仍然可以从终端命令行git push到第一个仓库,手动输入密码。
GitKraken说:“配置的SSH密钥格式无效。请确保您的密钥有效且是RSA类型的密钥。”
类似于Sun的回答,我去了GitKraken首选项/身份验证/常规。 与Coming Sun的答案不同,我已经有一个私钥/公钥,并且不想生成新的密钥对。 相反,我选择了“使用本地SSH代理”。这为我修复了GitKraken。
答案 2 :(得分:7)
答案 3 :(得分:3)
已经有很多答案了,我认为大多数答案都非常有帮助。我仍将在此处添加更多信息,因为我认为没有任何答案可以完全解决问题。
这就是我从一开始就坐在MacOS上解决此问题的方法。
ssh-keygen
以生成密钥。我确实提供了一个密码短语。ssh-add -K ~/.ssh/id_rsa
将我的身份保存在本地ssh代理中。 这很重要。在此请注意,它是一个大写的-K,这意味着我也想将密码短语存储在本地ssh代理中,这将导致它进入store my passphrase in the keychain,因此我不需要一直都重新输入它整洁! ~/.ssh/id_rsa.pub
公钥添加到服务器(bitbucket.org,azure devops,github或w / e)。git fetch
或从Gitkraken执行git fetch时,它们都应该可以工作。 Gitkraken将使用您计算机上已配置的ssh代理,以成功对我们进行身份验证。希望这对您有所帮助。
更新:我还必须在ssh-add -K ~/.ssh/id_rsa
中包含~/.bash_profile
才能使其自动加载,否则,您必须在每次重新启动计算机时都运行该命令。 < / p>
答案 4 :(得分:1)
因此,以防万一这对其他人(或者我曾经忘记的我)有所帮助,看来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才能满意。
谢谢,乔什
答案 5 :(得分:1)
我通过结合使用gabeios答案并同时打开和关闭“使用本地ssh代理”选项(gitkraken首选项>身份验证>“使用本地ssh代理”)来使我的工作正常。
我将其关闭并尝试了gabeios答案,但它不起作用,但随后将其打开并再次尝试了gabeios答案。出于某种原因,两者的某种结合对我起作用。我在Mac上。希望对您有所帮助。
答案 6 :(得分:1)
gabeio的答案有效。为了避免每次在终端中调用ssh-add -K ~/.ssh/id_rsa
,可以将其添加到配置文件中。
您可以将其放入~/.bash_profile
:
将
ssh-add -K ~/.ssh/id_rsa
放入您的~/.bash_profile
但是它需要打开终端以执行此行。
就我而言,我将其添加到/etc/profile
中。在ssh-add -K ~/.ssh/id_rsa
的底部添加行/etc/profile
。这是终端中的说明:
$sudo chmod 644 /etc/profile
的权限$sudo nano /etc/profile
ssh-add -K ~/.ssh/id_rsa
的底部。它对我有用,而无需每次都打开终端。希望能有所帮助。
答案 7 :(得分:0)
首选项...>身份验证
我只需要切换到
[]使用本地SSH代理
代替使用我本地ssh的路径
答案 8 :(得分:0)
确保正确设置了遥控器。 Gitkraken将允许您通过粘贴“ git clone”命令进行克隆,但会错误地将其设置为原点
答案 9 :(得分:0)
如果您尝试访问 Github 中的存储库,但是它不起作用。
这对我有用:
首先,查看存储库中是否具有“写访问权限”
(Setting -> Manage Access)
如果错误仍然存在:
断开Gitkraken中的Github帐户
(File-> Preferences -> Authentication -> Github -> Disconnect)
在Github中重新访问Gitkraken
(Settings-> Applications -> Authorized Oauth Apps -> Gitkraken -> Revoke)
再次将Gitkraken连接到Github
(make sure that you give permission to all your repositories)
我希望这会对您有所帮助:)
答案 10 :(得分:0)
尝试了所有答案后,即使是我自己的一个答案,当我再次遇到问题时也无法使用,我发现问题与SSH密钥无关,但与GitKraken UI中的给定选项有关(可能是最新版本)写作: 7.3.2 )
即使已成功添加SSH密钥,尝试使用以下选项进行克隆:文件>克隆存储库>使用URL克隆(使用SSH或HTTPS)将导致此错误:
Clone Failed
C:\path-to-folder Configured SSH key is invalid. Please confirm that it is properly associated with your Git provider.
但是... 可以与以下选项一起使用:文件>克隆存储库> Bitbucket.org>克隆存储库 (在其中选择一个存储库帐户)。
Successfully cloned repo 'my_repo'
使用URL克隆选项是否必须正常工作?
好吧...
答案 11 :(得分:0)
我有很多用于多个项目的密钥,在~/.ssh/config
和/或~/.gitconfig
中,身份已经很好地管理了,不想在另一个地方跟踪/引用它们!
到目前为止,大多数有效答案都需要在~/.ssh/config
中有我的键和定义,然后还要在ssh-add -K ~/.ssh/...
和/或~/.bash_profile
中对~/.profile
进行引用/调用两者都不是理想的。
我正要创建一个函数来放入~/.bash_profile
和/或~/.profile
以遍历~/.ssh/*/...
中的所有键和子文件夹,因此至少我不需要记住在此处添加新密钥。
然后我发现this beautiful approach here所需要做的就是在AddKeysToAgent yes
中添加一条附加的~/.ssh/config
指令,以获取要自动添加到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