2011-02-25 108 views
8

我想做svn + ssh沒有密碼從命令行?

svn update /Users/radek/Sites/3.0.5/ -r HEAD --force 

,無需輸入密碼。

svn連接到我們的存儲庫服務器,但我不知道在什麼用戶名(我怎麼能找到?)。我想這可能是rootradek

我輸入的svn密碼與存儲庫服務器上的root密碼相同,所以我將公鑰添加到root的authorized_keys文件中。所以我SSH倉庫服務器沒有輸入密碼,但它並沒有影響svn要求輸入密碼。存儲庫服務器上用戶radek的密碼與我輸入的密碼不同svn up

如果我提交Eclipse的某些內容,則作者爲radek。

解決方案

svn info 

告訴我需要登錄到存儲庫服務器,用戶,然後我加入公鑰的authorized_keys文件。現在我不必在使用svn時輸入密碼。

+0

你運行SSH代理過嗎?您是否將密鑰添加到代理? – wilhelmtell

+0

與編程無關。投票遷移到http://superuser.stackexchange.com –

+1

我是一名程序員,這幫助我編寫了一個程序來自動執行我的程序的svn checkins。 – Kyle

回答

6

有一個名爲「ssh-agent」的程序,它可以將未鎖定的RSA或DSA密鑰保存在內存中,並通過UNIX套接字將此密鑰提供給SSH。假設您生成RSA或DSA公鑰/私鑰對,並將公鑰添加到遠程主機的「authorized_keys」或「authorized_keys2」文件中,這可用於「無密碼」SSH連接。當您第一次向ssh-agent添加密鑰或打開ssh-agent時,您需要提供密碼,但後續使用SSH時可能會出現沒有密碼的情況。您可能會發現下面的文章中建立SSH代理方面有所幫助:

注意,在Mac OS X(爲10.5及更高版本),如果您生成私鑰/公鑰對並將公鑰放在遠程主機的authorized_keys文件中,那麼當您進入該主機時,Mac OS X將自動啓動其自己的ssh-agent(無需安裝),並提供給記住密碼(它w把它保存在KeyChain中)。你可以閱讀關於Mac OS X Leopard -- Built-In SSH Agent的更多信息。

+0

我在OS X 10.6.2上,我將公鑰添加到存儲庫服務器的根目錄「authorized_keys」,但沒有任何幫助。或者我錯過了什麼? – Radek

+0

除非您以root身份進行身份驗證,否則您不應該將其放在那裏;你應該把它放在遠程主機上的「〜/ .ssh/authorized_keys2」下面。您還必須確保主機配置爲允許使用這些密鑰(某些系統配置爲禁止使用此密鑰)。 –

+0

〜是主目錄,對吧?我必須鍵入的密碼不是用戶'radek',而是'root'的密碼,我可以登錄到存儲庫服務器而無需鍵入任何密碼作爲根,但它沒有幫助。仍然必須鍵入svn的svn密碼 – Radek

3

如果您不能使用密鑰文件,使用sshpass(在Linux中):

安裝sshpass

$ sudo apt-get install sshpass 

設置臨時環境變量

$ export SSHPASS=yourpass 

編輯SVN配置文件

$ nano ~/.subversion/config 

最後註釋掉添加sshpass -e到SSH路線,ssh命令

ssh = $SVN_SSH sshpass -e ssh -q -o ControlMaster=no 
+0

謝謝:)我正在尋找這麼長時間 –