在git與tortoisegit中使用openSSH與PuTTY


問題

在使用Git與tortoisegit的時候,指定遠程版本庫的地址有2種方式:

  1. 使用https方式的git地址非常直接(https://xxx.oschina.net/xxx.git),基本上什么都不需要配置,不管是git bash還是tortoisegit都能完美使用,但是每次需要連接遠程服務器時,都要提示我輸入用戶名與密碼,非常不爽;
  2. 使用ssh方式的git地址非常爽快(git@git.oschina.net:xxxx/xxx.git),不需要輸入密碼,但是需要配置。

第一種方式沒啥說的,第二種方式的應用,我配置的時候出現了一個問題:

配置了tortoisegit的putty后,直接用tortoisegit可以不輸入密碼直接完成操作;但是當我使用git bash的時候,使用git pull之類的命令還需要我輸入密碼...

P.S. 別說我閑的,有tortoisegit為啥還用git bash。實際上,使用git bash在有的操作上還是挺方便的(比如刪除分支 git push origin :branchx)。

 

那怎么弄才能讓這2個小家伙都不輸入密碼呢?

這里又有兩種辦法...

  1. 調整tortoisegit的settings中的network選項,將tortoisegitplink.exe改成git安裝目錄的下bin\ssh.exe。如果先前用ssh-keygen.exe配置好了git下的ssh話,改完就能直接用,沒配置好的話...等下說。
  2. 默認安裝tortoisegit,會使用PuTTY(plink)作為默認的ssh方式,聲稱對windows集成更好,如果不想改這種方式的話,就只能讓git的ssh.exe使用PuTTY的密鑰了,tortoisegit繼續使用PuTTY。

注意:tortoisegit可以自動載入putty key,使用puttygen程序可以生成對應的公鑰與私鑰。

 

解決方法

我先前已經配置好了PuTTY,只是bash中的openssh不能用,於是我采用第二種方式。公鑰是相同的,需要轉換一下私鑰。

定位putty的ppk文件,用puttygen(在tortoisegit目錄里面)打開(conversions>import key)

然后點擊conversions>export openSSH key,保存文件為id_rsa文件,不要拓展名。

然后再點擊下面的save public key按鈕,保存為id_rsa.pub文件,效果如下:

找到自己%home%下(~)的.ssh文件夾,一般windows 7以后的在c:\用戶\“自己的用戶名”下面。沒有的話,可以新建。

把剛才的兩個文件扔進去。打開git bash,執行命令,如下圖。

跳轉到自己的版本路徑,執行git pull,命令行再也不提示密碼了...再試試tortoisegit,依然也不提示要密碼。

這樣實際相當於配置了一回git的ssh,讓openSSH與putty使用相同的密鑰,git bash使用openssh連接,而tortoisegit使用PuTTY連接,誰也不礙着誰。

 

實踐指南

依據自己的喜好,為了不重復輸入用戶名與密碼,可以選擇兼用PuTTY與OpenSSH或者只用openSSH

*兼用openSSH與PuTTY*

1.配置tortoisegit的PuTTY:http://my.oschina.net/longxuu/blog/141699

2.確認tortoisegit可以正常使用PuTTY,可以按照上面解決方法的步驟配置openSSH以供git bash使用。

 

*只用openSSH*

1.使用git bash,輸入ssh-keygen.exe –t rsa –C “自己的email”

2.如果不想輸密碼的話,一路回車,程序會自動生成.ssh/下面的id_rsa和對應的pub文件

3.打開id_rsa.pub文件,將內容全部復制

4.在版本控制的網站(例如oschina),在個人資料里面,SSH公鑰,新添一個公鑰,將剛剛的東西貼進去。

5.可以參照http://git.oschina.net/oschina/git-osc/wikis/%E5%B8%AE%E5%8A%A9#ssh-keys進行驗證

6.調整tortoisegit的settings中的network選項,將tortoisegitplink.exe改成git安裝目錄的下bin\ssh.exe。

7.在對應項目的文件夾上右鍵,點擊tortoisegit下的settings,定位到remote

8.修改對應的url為SSH地址,putty key定位到id_rsa文件,如下圖

9.測試tortoisegit,沒有錯誤,則大功告成~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM