我将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 .ppk
)文件.ppk
加载到Pageant(PuTTY身份验证代理)。尽管密钥被Pageant加载并保存在内存中,但与服务器的连接始终失败,例如git: fatal: Could not read from remote repository
。使其工作的唯一方法是启动ssh-agent
和ssh-add
(使用OpenSSH)。
由于我通常在后台运行Pageant,因此我觉得使用起来更方便(例如,打开私钥的关键短语很长/很复杂,而且我不记得了,它可以从中复制粘贴KeePass,在OpenSSH的情况下,cmd
控制台不允许我粘贴它,太糟糕了。)
是否有通过PuTTY而不是OpenSSH对GitLab进行ssh身份验证?
答案 0 :(得分:3)
在使用plink之前,您是否使用PuTTY连接到SSH服务器?如果不是原因可能是plink拒绝连接到服务器,因为尚未验证ssh hostkey。另一个原因可能是SSH服务器需要PuTTY不支持的密码。您只能查看是否使用与plink相同的版本连接PuTTY。
使用TortoiseGitPlink(来自TortoiseGit)来解决此问题,因为它会弹出一个消息框,询问是否接受主机密钥。