2016-04-05 33 views
0

我的大部分個人項目都是Atlassian的BitBucket。作爲一種自然選擇,我使用SourceTree應用程序(他們的產品)作爲Windows上的git GUI客戶端,我對此感到滿意。對於ssh git可用的項目,我比https更喜歡ssh。 SourceTree在BitBucket上託管的項目中發揮得非常好。儘管它提供了兩種ssh代理:OpenSSH或PuTTY,但它的默認選擇是PuTTY/Plink(可能是因爲PuTTY更熟悉Windows)。GitLab不能使用在Pageant中加載的密鑰?

最近我的機構申請在自己的服務器上託管一些項目。首先看看它是一個使用GitLab開源的git服務器。我可以使用SourceTree和這裏使用的項目https就好,但是當涉及到ssh時,SSH代理的唯一選擇是OpenSSH。它會使用(除非在配置中指定)的唯一密鑰對~/.ssh/id_rsa.pub~/.ssh/id_rsa(位於%USERPROFILE%\.ssh\

我試過:

  • 負載~/.ssh/id_rsa到PuTTY密鑰生成
  • 將其轉換爲膩子格式(.ppk)文件
  • 裝入.ppk成佳麗(膩子認證代理)。

儘管關鍵字被Pageant加載並保存在內存中,但與服務器的連接始終失敗,例如, git: fatal: Could not read from remote repository。使其工作的唯一方法是開始ssh-agentssh-add(使用OpenSSH)。

由於我通常在後臺運行Pageant,我發現使用起來更方便(例如,keyphrase打開私鑰長/複雜,我不記得它,它可以複製粘貼來自KeePass,而在OpenSSH的情況下,cmd控制檯不允許我粘貼它,太糟糕了)。

是否有無論如何通過PuTTY而不是OpenSSH做GitLab的SSH認證?

回答

3

在使用plink之前,您是否使用PuTTY連接到SSH服務器?如果不是原因可能是plink拒絕連接到服務器,因爲ssh主機密鑰尚未驗證。另一個原因可能是SSH服務器需要PuTTY不支持的密碼。您只能確定您是否使用與plink相同版本的PuTTY連接。

使用TortoiseGitPlink(來自TortoiseGit)來規避此問題,因爲它會彈出一個消息框詢問是否接受主機密鑰。