2009-12-15 29 views
98

我知道答案在那裏,但我非常愚蠢,可能不會識別解決方案,如果它擊中了我的臉。SVN + SSH,不必每次都做ssh-add? (Mac OS)

我在Mac上,通過SSH隧道連接到SVN服務器。每次我想連接到SVN服務器(基石和Xcode都連接到SVN)時,我必須登錄ssh-add privateKey.txt

有沒有辦法在某處「保存」鑰匙,所以我不必每次都這樣做?將它添加到我的鑰匙串?一些配置文件?啓動腳本?

回答

167

首先,將你的私鑰文件到~/.ssh。這不是絕對必要的,但它是這種事情的標準地點。然後運行ssh-add -K ~/.ssh/privateKey.txt。它會在必要時提示您的密碼,然後將其添加到您的鑰匙串中。

之後,你不應該做任何事情。有一個稍長的解釋可用here

+16

我想這是值得明確指出的是,這是Mac的事情,不是一個普遍的Unix的東西。在Ubuntu上,'ssh-add'不能帶'-K'參數。 – 2014-01-14 14:48:49

+2

我想指出的是,雖然鏈接的文章是用於Leopard的,但這仍然適用於OS X Mavericks。 – 2014-05-14 14:38:27

+1

也許有人對其他環境有相同的命令? mysysgit的ssh-add不接受-K參數,要麼 – Blake 2014-09-05 07:43:36

1

sshkeychain是一種可能性。安裝細使用的MacPorts:

sudo port install sshkeychain 

它使用鑰匙串來存儲密碼,你可以簡單地在您的登錄會話啓動時啓動它(使用在第一次發射在通常的右GHT點擊dock的圖標+「啓動時啓動」)

請注意,Apple的svn使用鑰匙串存儲密碼,但不一定是使用macports構建的svn二進制文件。

18

經過多番探索,我想我已經完全找到了這個問題的答案。首先,請確保你做的是ssh-add -K ~/.ssh/your_key_here。這將鑰匙添加到您的鑰匙鏈中。有些地方,我讀過這個就夠了,但我不確定。這也是特定於mac的,所以如果你需要在另一個unix版本上這樣做,你就不一定有這個選項。

爲了好的措施,我編輯了~/.ssh/config文件(您可能需要創建它)來指向我所有的密鑰。礦井有以下:

IdentityFile ~/.ssh/identity 
IdentityFile ~/.ssh/id_rsa 
IdentityFile ~/.ssh/id_dsa 
IdentityFile ~/.ssh/my_other_identity_here 
IdentityFile ~/.ssh/yet_another_identity_here 

按照man page爲ssh_config中,它會爲了嘗試這些。我不確定我列出的前三個默認列表是否需要在那裏,但我仍然將它們包括在內。

+0

沒有'-K'標誌在mac os x中爲'ssh-add' – 2015-11-16 10:52:08

+2

**在OS X上有**'-K'標誌用於'ssh-add'。除此之外,這應該是選定的答案。 – kaiser 2015-12-08 13:54:37

+1

請確保您使用'/ usr/bin/ssh-add'提供的自制軟件'/ usr/local/bin/ssh-add'不提供-K選項。 – 2016-09-19 12:10:23

49

存儲密碼短語在Keychain

要存儲的密碼在鑰匙串打開一個終端,運行默認鍵:

ssh-add -K 

,並存儲爲一個不同的密鑰運行的密碼:

ssh-add -K /path/to/private/key/file 

當提示您輸入密碼時,就是這樣。

您將永遠不需要運行ssh-add,也不需要再輸入密碼。

回答這個網站採取: http://www-uxsup.csx.cam.ac.uk/~aia21/osx/leopard-ssh.html

3

由於MACOS 10.12.2可以使用UseKeychain選項。 Read more here或查看man ssh_config

 UseKeychain 
     On macOS, specifies whether the system should search for passphrases in the user's keychain 
     when attempting to use a particular key. When the passphrase is provided by the user, this 
     option also specifies whether the passphrase should be stored into the keychain once it has 
     been verified to be correct. The argument must be ``yes'' or ``no''. The default is ``no''. 

因此,只要做到以下幾點:

echo "UseKeychain yes" >> ~/.ssh/config

+1

這需要增加。 **很重要**! – quarezz 2017-06-19 14:27:26