2014-01-24 84 views
2

在排除我的other問題,我猜測由於某種原因,默認私鑰沒有被使用。ssh從ssh會話中使用不正確的ssh私鑰

在服務器,C:\用戶\ Administrator.ssh \ CONFIG包含:

Host bitbucket.org 
IdentityFile ~/.ssh/id_rsa.ppk 

我使用砰砰同時登錄到管理SSH密鑰運行git命令工作得很好時。我實際上是以管理員身份登錄的計算機。再如:plink -T [email protected]工作正常。

但是,當通過PuTTY登錄到服務器時,運行git命令失敗,plink -T [email protected]也會失敗。但是,當我使用plink指定私鑰時:plink -T -i C:\Users\Administrator\id_rsa.ppk [email protected],它可以工作。

當我登錄PuTTY時,%userprofile%正確,我的筆記本電腦的用戶名和密碼完全相同。什麼導致ssh無法獲取並使用配置中指定的ppk文件?我的GIT_SSH會話變量也在本地登錄並通過PuTTY登錄時設置爲plink.exe。令人沮喪的是,在發出git命令時,我無法指定ppk文件。

更新:正如在下面的評論回覆中所述,主要的問題似乎是pageant.exe沒有被用於將密鑰發送到我嘗試連接的服務器。在本地登錄時,通過PuTTY登錄時,非常好,但不會啓動。我還閱讀了PuTTY中的'用戶代理轉發',但這似乎沒有幫助。也許freeSSHd不支持它?如果這樣做甚至會有所作爲?

更新2:Yeeeeaaaahhh ...越來越近。我在登錄到VNC查看器時輸入了'pageant',並表示'選美已在運行'。所以我說了什麼,把它輸入到PuTTY控制檯中......沒有任何事情發生。所以我認爲它沒有運行,現在是。於是我執行了plink -T -v [email protected]並執行了lo-and-behold選美,但表示它已安裝0個SSH密鑰。所以這是核心問題。 pageant是基於用戶會話的應用程序,它認爲SSH用戶Administrator與本地管理員不同,因此它不提供任何密鑰。我還關閉了PuTTY連接,並注意到額外的瀏覽器進程仍在運行。壞消息#1。壞消息#2是,我可以從PuTTY中啓動的選美進程數量沒有限制。該怎麼辦?

FINAL:問題已解決;請參閱上次編輯的答案。

回答

1

這是我的「解決方案」:

1)從私鑰文件中刪除密碼。 pageant不允許輸入密碼作爲命令行參數,所以我不能在putty上使用它。吮吸,但我還能做什麼?

2)在freeSSHd應用程序中,在命令外殼程序框中鍵入C:\WINDOWS\system32\cmd.exe /K "pageant C:\Users\Administrator\.ssh\id_rsa.ppk"以使ssh用戶執行分頁,以便pageant在請求密鑰時識別。這會導致另一個瀏覽器EXE進程在後臺運行,並且在關閉ssh連接時它不會關閉,但只有一天晚上我可以做很多事情。如果我能以某種方式獲得它所產生的進程的PID,然後以某種方式在關閉時運行一個腳本,那就很好。

3)現在有效。

附錄:freeSSHd服務不能在本地用戶帳戶下運行,它必須是SYSTEM帳戶;否則它會立即關閉成功的連接。爲什麼?不知道。我認爲這是最大的障礙......也許ssh用戶基本上在系統帳戶下運行,因此無法訪問在「管理員」下運行的已運行的瀏覽器進程。

更好的答案更新:我擺脫了freeSSHd,並用openssh安裝了Cygwin。對所有sshd配置選項選擇「是」,不要聽其他在線教程對某些選項說「不」。不要在SYSTEM帳戶下運行sshd。讓它創建一個新的用戶帳戶並使用該帳戶。最大的好處是,現在當我通過PuTTY運行'pageant'時,無論多少次我都這麼做,並不重要,因爲它不會產生兩個以上的進程!一個用於已經運行的實際本地管理員帳戶,另一個用於古怪的「SSH管理員」帳戶(它只是稱爲管理員)。即使從不同的計算機登錄,也不會產生更多的進程。問題解決了。

+0

+1比我的回答更詳細。我想製作一個包裝器,用於包裝器設置正確的環境變量,並調用實際的plink,試圖強制執行像'%HOME%'這樣的環境變量的特定路徑,任何執行的用戶包裝。但是,如果你的方式正在工作,+1。 – VonC

1

確保您確實有定義的HOME環境變量,在任何時候都參考C:\Users\Administrator(或%USERPROFILE%),尤其是當您通過PuTTY登錄時。

這將允許SSH找到你的SSH配置文件。

還要確保在生成ssh密鑰時以及在使用ssh和git時使用相同的ssh實現:請參閱「Git with SSH on Windows」。
如果您的私鑰具有密碼保護,請參閱「Why git can't remember my passphrase under Windows」。

+0

確保所有環境變量指向正確的位置後,我仍然遇到問題。我通過使用VNC查看器登錄進行了一些小小的並行比較,所以我可以看到命令提示一起查看差異。當運行「plink -T -v [email protected]」時,我發現本地cmd提示正在調用pageant.exe來提供密鑰,但PuTTY界面根本不顯示該調用。因此,當以SSH用戶身份登錄時,瀏覽器似乎沒有被激活。我如何解決這個問題? – JakeTheSnake

0

如果無法找到它期望的任何位置的關鍵,你也可以添加參數-v-i像:

plink -v -ssh -2 -i /whatever/location/id_rsa -l git gitserver.acme.com 

首先,-v(詳細)將有助於確定問題。然後,您可以繼續使用-i參數以確保它找到密鑰並且它是有效的。

然後你去%userprofile%

我也認爲你的目錄應該是c:\ Users \ Administrator.ssh - 可能你做了一個錯字,你忘了添加一個反斜槓。