問題
在使用Git與tortoisegit的時候,指定遠程版本庫的地址有2種方式:
- 使用https方式的git地址非常直接(https://xxx.oschina.net/xxx.git),基本上什么都不需要配置,不管是git bash還是tortoisegit都能完美使用,但是每次需要連接遠程服務器時,都要提示我輸入用戶名與密碼,非常不爽;
- 使用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個小家伙都不輸入密碼呢?
這里又有兩種辦法...
- 調整tortoisegit的settings中的network選項,將tortoisegitplink.exe改成git安裝目錄的下bin\ssh.exe。如果先前用ssh-keygen.exe配置好了git下的ssh話,改完就能直接用,沒配置好的話...等下說。
- 默認安裝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,沒有錯誤,則大功告成~