2013-05-21 94 views
1

當我嘗試使用SSH訪問我自己的GitHub repo時,我的(最新)Netbeans(NetBeans IDE 7.3 (Build 201302132200))似乎完全失敗。它的工作原理沒有HTTP URL的問題。Netbeans無法使用SSH密鑰訪問GitHub

因爲我已經導入了一個使用TortoiseGit創建的GitHub存儲庫(New > PHP Project with existing sources)的現有本地副本,所以在本地副本元數據(可能位於.git文件夾中)中保存了遠程設置。因此Netbeans在Push to Remote Repository窗口中提供選項Select Configured Git Repository Location。但在這方面沒有成功。

試過以下:

  1. 當我使用SSH URL([email protected]:user/reponame.git)和Password選項與帳戶通,Netbeans的嘗試連接的GitHub(遠程)和大約5秒後拋出錯誤Cannot connect to the remote repository at [email protected]:user/reponame.git

  2. 當使用SSH URL與Private/Public Key選項,Netbeans的立即引發一模一樣的錯誤,所以我認爲,由於某種原因,它甚至不嘗試連接GitHub上。

什麼是更奇怪的(?),Netbeans的不是要求專用密鑰的passpharse。我已經設定了它,但沒有刻意輸入到Netbeans,來測試連接過程。我非常確定,Netbeans會要求我提供這個passpharse,因爲如果沒有它,它將不能使用私鑰。令我驚訝的是,它沒有要求它,而是拋出一個錯誤,說它不能連接GitHub。當然,那只是一個考驗。輸入正確的passpharse後,我得到完全相同的效果。

我從GitHub網站上直接複製了我的回購網址,沒有任何修改。看來,我只能使用HTTP URL(https://github.com/user/reponame.git)。這工作,並保證所有項目(網址,用戶,reponame,密碼,最終互聯網連接)都可以。但是,似乎Netbeans在SSH URL上完全失敗。

以上情況一如既往,不管我在Push to Remote Repository窗口中選擇Select Configured Git Repository LocationSpecify Git Repository Location。無論如何,我會做什麼我無法通過Netbeans中的SSH訪問我的存儲庫,並且使用HTTP是唯一的選擇。

我使用puttygen.exePuTTY's website創建了我的私鑰 - 公鑰對。我在Netbeans安裝目錄中保存了私鑰並將公鑰添加到GitHub's SSH Settings頁面。我使用了通常與TortoiseGit一起使用的分步指南。

我不知道還有什麼我可以錯過或我做錯了嗎?任何想法?

回答

1

系列的多次測試後,我發現Netbeans的:

  1. 不工作,以及與GitHub上的(或任何其他GIT)遠程倉庫現有的本地副本。

  2. 完全不能使用由puttygen生成的SSH密鑰。

至於第一,我不得不刪除與TortoiseGit克隆的整個文件夾和使用NetBeans捆綁工具(Team > Git > Clone)克隆同一倉庫。Subversion也是如此(看看here) - 所以一般的經驗法則表明,當你從另一個Git或SVN客戶端切換到Netbeans時,你應該做一個完整的,乾淨的遠程倉庫克隆(或簽出)爲嘗試重新使用現有的副本很可能會失敗。

至於第二,按照this GitHub article作出批示,並使用ssh-keygen(無論是從本地安裝的Git適用於Windows,Windows中的任何其他來源或情況),而不是puttygen - 由它生成SSH密鑰不能在Netbeans中用於設置無密碼登錄到GitHub。

正如我寫的,我以前一直在使用TortoiseGit,它接受和使用puttygen密鑰很好,所以它不是顯而易見的,問題的根源在這裏。

解決了這兩個問題(獲得乾淨的克隆並生成正確的密鑰)後,我的問題中表達的問題消失了,Netbeans與GitHub存儲庫一起工作,就像魅力一樣。

3

備案: 使用PuTTYgen生成密鑰時,建議將其作爲兼容性導出爲OpenSSH密鑰。這可以通過訪問轉化>導出OpenSSH密鑰菜單來實現。