透過 SSH 的 SVN 無法在 Windows 上使用 Tortoise SVN 運行

透過 SSH 的 SVN 無法在 Windows 上使用 Tortoise SVN 運行

我可以透過 SSH 存取已svnadmin安裝的 FreeBSD 電腦(以及其餘必要的實用程式)。 svn 版本為 1.7.9 (r1462340)。我使用的是 Windows 7 x64,使用 Tortoise SVN 1.7.7。

我已關注這個官方指南幫助我設定我的伺服器和 Tortoise SVN,但我在設定時遇到問題。

我產生了一對私鑰/公鑰,並將它們~/.ssh/authorized_keys分別添加到我的伺服器檔案和 Putty 設定中。我可以使用 putty 和我的私鑰連接到遠端電腦。

我還嘗試配置 Tortoise SVN 來做同樣的事情,並且我正在連接到:

svn+ssh://myBSDusername@it2svn/somerepo

it2svn名字在哪裡在職的Putty 連接設定文件,somerepo是我的儲存庫根 ( ) 中的儲存庫~/svnroot/somerepo

出現的問題問題是 Tortoise SVN 請求我的金鑰密碼,無論我正確輸入多少次,密碼對話框都會關閉 1-2 秒,之後它會再次提示我輸入密碼。它甚至沒有說這是錯誤的,它只是一遍又一遍地詢問我密碼。

如果我故意輸入錯誤的密碼,系統會再次提示我輸入密碼即刻,沒有輸入正確時出現的 1-2 秒延遲。即使我輸入了胡言亂語,對話框仍然沒有說這是錯誤的。這可能是他們這邊的錯誤,但它仍然不能解釋為什麼我的正確密碼不被接受。

配置

以下是文件的內容authorized_keys(已刪除金鑰的實際內容):

ssh-dss AAA....FuA== myBSDusername@ems

command="svnserve -t -r ~/svnroot --tunnel-user=svnAuthorDude",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-dss AAAA....IFuA== myBSDusername@ems

重要的提示:指南說我的“命令行”應該如下所示:

command="svnserve -t -r <ReposRootPath> --tunnel-user=<author>",
     no-port-forwarding,no-agent-forwarding,no-X11-forwarding,
     no-pty ssh-rsa <PublicKey> <Comment>

ssh-keygen但是我使用與指南中相同的參數產生的金鑰以ssh-dss而不是開頭ssh-rsa,這就是為什麼ssh-rsa在我自己的檔案中被替換為dss(顯然是因為金鑰是 DSA 而不是 RSA 金鑰)。

答案1

您遇到的問題是在密鑰對上使用密碼而不是使用選美。

當 TortoiseSVn 連接 SSH 隧道時,它似乎使用 plink(或 TortoisePLink)發出多個單獨的請求。每次發生這種情況時,都需要 SSH 金鑰,因此需要解鎖,從而發生密碼請求。

如果您不使用密碼保護金鑰對,則無需詢問密碼。

如果您在使用 TortoiseSVN 之前將 pageant 配置為載入金鑰,則 plink 將從 pageant 取得已解鎖並快取的金鑰。這樣您就可以使用受密碼保護的金鑰,而無需重複輸入密碼。不過,在將密鑰新增至選美比賽時,您仍然需要輸入一次。

答案2

我使用 PuttyGen 重新產生了金鑰對,並將其設為 RSA2 金鑰對(相對於舊的 DSA 金鑰)。我還跳過了使用密碼來保護我的私鑰,現在一切(神奇地)都正常了。我不知道到底是什麼改變真正解決了問題,但我希望這能幫助未來的開發人員解決類似的問題。

以下是我的用戶的(相關)內容~/.ssh/authorized_keys

ssh-rsa AAAA...Wc= rsa-key-20130529

command="svnserve -t -r /user/rest/of/path/svnroot --tunnel-user=someuser",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa AAAA...Wc= andrei

相關內容