2013-02-25 30 views
2

UNIX上的SVN命令行客戶端將密碼保存在〜/ .subversion文件夾中。第一次,客戶詢問密碼是否需要永久保存(p)。這也可以在/.subversion/servers僅保存會話的SVN驗證信息

store-passwords = no 

配置。我們有一些共同的登錄它不希望永久保存密碼。但是,輸入每個SVN命令的密碼是很痛苦的。有沒有辦法只保存退出時清除的會話密碼?

回答

0

如果您使用的是基於SSH的Subversion連接,您可以使用公鑰身份驗證和密碼加密私鑰並在會話開始時解鎖您的密鑰ssh-agent。由於ssh-agent將密鑰保存在內存中,因此退出時密鑰不再可用。

$ ssh-agent /bin/bash 

現在一個子shell啓動,你可以解鎖你的密鑰,並用顛覆:

$ ssh-add ~/.ssh/id_rsa_svn 
$ svn co svn+ssh://svn.example.com/svn/code 

完成後,退出子shell:

$ exit 

代理現在不再運行,所以你的密鑰不再可用。

$ 

(請注意,某些桌面環境提供自己的SSH代理實現,並與假設這些可能的混亂,「退出」將清除鍵,但是,這些也一般解鎖鑰匙圈,當你登錄,所以您的安全應該是等價的。)

我不知道的方式與基於密碼的驗證來做到這一點。我想你可以看到你的Unix特別的風格是否支持.logout文件或類似文件,並試圖編寫從Subversion的密碼存儲中刪除密碼的腳本。但是,該解決方案有幾個缺點:您依靠shell來運行腳本,腳本可能會失敗,並且您的密碼未加密地寫入磁盤。

+0

感謝您的回覆。我想我錯過了一些步驟。 SVN身份驗證在這裏通過用戶名/密碼(帶有AD後端)完成。我不知道如何在這裏使用SSH私鑰。 (沒有〜/ .ssh文件夾)。 – gammay 2013-02-27 06:19:55

+0

除非您可以配置Subversion服務器以提供'svn + ssh://'URLs,否則您將無法使用SSH公鑰認證。從你描述的那種服務器,我不指望你能夠完成這一點。我想說在我的答案在最後一段適用最佳 - you'd必須看到,如果你可以使用'.logout'式機制來清除認證。 – zigg 2013-02-27 13:59:09

+0

謝謝@zigg。我爲bash shell配置了.bash_logout,爲其他shell配置了陷阱。我會接受你的答案,因爲這解決了現在的問題。 – gammay 2013-02-28 07:04:50