SVN + SSH,不必每次都执行ssh-add吗?(苹果系统)


105

我知道答案就在那里,但是我非常笨拙,如果面对我,可能无法识别解决方案。

我在Mac上,通过SSH隧道连接到SVN服务器。我必须ssh-add privateKey.txt每次都想连接到SVN服务器(Cornerstone和Xcode都在连接到SVN)。

有没有一种方法可以将密钥“保存”在某个地方,所以我不必每次都这样做?将其添加到我的钥匙串吗?一些配置文件?启动脚本?

Answers:


172

首先,将私钥文件移到中~/.ssh。严格来说,这不是必需的,但这是此类事情的标准位置。

然后运行ssh-add -K ~/.ssh/privateKey.txt。如有必要,它将提示您输入密码,然后将其添加到钥匙串中。

之后,您无需执行其他任何操作。稍长的解释,请点击这里


17
我认为值得一提的是这是Mac,而不是通用Unix。在Ubuntu上,ssh-add不能-K争论。
Mark Amery 2014年

2
我想指出,尽管链接的文章是针对Leopard的,但这仍然适用于OS X Mavericks。
乔什·布朗

1
也许有人对其他环境有等效的命令?mysysgit的SSH-ADD不接受-K参数,或者
布雷克

5
由于某些原因,我-KI重新启动后仍然有问题
Mat Teague

7
您在macOS Sierra上吗?行为已更改,您现在需要在登录时将密钥显式添加到ssh-agent:github.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain
Nicholas Riley

49

将密码短语存储在钥匙串中

要将默认密钥的密码存储在钥匙串中,请打开终端并运行:

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


20

经过大量探索,我认为我已经完全找到了解决该问题的方法。首先,请确保您这样做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

根据ssh_config 的手册页,它将按顺序尝试这些操作。我不确定我列出的前三个默认值是否需要存在,但是无论如何我都将它们包括在内。


-K在Mac OS X上没有用于ssh-add
dr.dimitru的

2
这里一个-K在OS X的标志ssh-add。除此之外,这应该是选定的答案。
kaiser 2015年

1
确保使用/usr/bin/ssh-add提供的自制程序/usr/local/bin/ssh-add不提供-K选项。
雷姆科·温特

2
一旦~/.ssh/config存在,则无需ssh-add在重新启动计算机后每次都运行命令。
hailong

7

从macOS 10.12.2开始,您可以使用该UseKeychain选项。 在这里阅读更多或研究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


3
这需要上升。非常重要
quarezz


1

sshkeychain是一种可能性。使用以下命令在macports上安装良好:

sudo port install sshkeychain

它使用钥匙串来存储密码,您可以在登录会话启动时简单地启动它(使用第一次启动时,通常在扩展坞的图标上单击鼠标右键,然后单击“启动时启动”)

请注意,Apple的svn使用钥匙串来存储密码,但不一定要使用macports构建的svn二进制文件。


0

通过运行以下命令将您的钥匙添加到钥匙串中:

ssh-add -K ~/.ssh/id_rsa

并编辑您的ssh config(~/.ssh/config)文件,以将密钥从密钥链自动加载到ssh-agent(AddKeysToAgent yes选项),并将密码短语存储在密钥链(UseKeychain yes选项)中:

Host *
 AddKeysToAgent yes
 UseKeychain yes
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.