GitLab无法使用Pageant中加载的密钥?

时间:2016-04-05 09:55:41

标签: windows git ssh ssh-keys atlassian-sourcetree

我将Atlassian的大部分个人项目保留在BitBucket。作为一个自然的选择,我在Windows上使用SourceTree app(他们的产品)作为git GUI客户端,我很高兴。对于ssh git可用的项目,我更喜欢ssh而不是https。 SourceTree非常适合在BitBucket上托管的项目。虽然它提供了两种ssh代理:OpenSSH或PuTTY,但它的默认选择是PuTTY / Plink(可能是因为PuTTY更熟悉Windows)。

最近,我的机构要求在自己的服务器上托管一些项目。首先看它是使用GitLab opensource的git服务器。我可以使用https将SourceTree与此处托管的项目一起使用,但是当谈到ssh时,SSH代理的唯一选择是OpenSSH。它将使用的唯一密钥对(除非在配置中指定)是~/.ssh/id_rsa.pub~/.ssh/id_rsa(位于%USERPROFILE%\.ssh\

我试过:

  • ~/.ssh/id_rsa加载到PuTTY Key Generator
  • 将其转换为PuTTY格式(.ppk)文件
  • .ppk加载到Pageant(PuTTY身份验证代理)。

尽管密钥被Pageant加载并保存在内存中,但与服务器的连接始终失败,例如git: fatal: Could not read from remote repository。使其工作的唯一方法是启动ssh-agentssh-add(使用OpenSSH)。

由于我通常在后台运行Pageant,因此我觉得使用起来更方便(例如,打开私钥的关键短语很长/很复杂,而且我不记得了,它可以从中复制粘贴KeePass,在OpenSSH的情况下,cmd控制台不允许我粘贴它,太糟糕了。)

是否有通过PuTTY而不是OpenSSH对GitLab进行ssh身份验证?

1 个答案:

答案 0 :(得分:3)

在使用plink之前,您是否使用PuTTY连接到SSH服务器?如果不是原因可能是plink拒绝连接到服务器,因为尚未验证ssh hostkey。另一个原因可能是SSH服务器需要PuTTY不支持的密码。您只能查看是否使用与plink相同的版本连接PuTTY。

使用TortoiseGitPlink(来自TortoiseGit)来解决此问题,因为它会弹出一个消息框,询问是否接受主机密钥。