我可以透過 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