关于macos:SVN + SSH,不必每次都进行ssh-add?

SVN+SSH, not having to do ssh-add every time? (Mac OS)

我知道答案是肯定的,但我是个很笨的Unix用户,如果它打到我的脸上,我可能就认不出解决方案了。

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

有没有办法把钥匙"保存"在某个地方,这样我就不必每次都这样做?把它加到我的钥匙链上?一些配置文件?启动脚本?


首先,将您的私钥文件移到~/.ssh中。这不是严格必要的,但它是这类事情的标准场所。

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

在那之后,你不应该再做其他的事情了。这里有一个稍长的解释。


在密钥链中存储密码短语

要在keychain中存储默认密钥的密码短语,请打开终端并运行:

1
ssh-add -K

并为不同的密钥运行存储密码短语:

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

当提示您输入密码时,请输入它,即它。

您将永远不需要运行ssh add,也不需要再次输入密码短语。

从该站点获取的答案:http://www uxsup.csx.cam.ac.uk/~aia21/osx/leopard-ssh.html


经过很多探索,我想我已经找到了这个问题的答案。首先,确保你做了ssh-add -K ~/.ssh/your_key_here。这会将钥匙添加到钥匙链中。有些地方,我读到这已经足够了,但我不确定。这也是特定于Mac的,所以如果您需要在另一种Unix风格上执行此操作,则不必使用此选项。

为了更好地衡量,我编辑了~/.ssh/config文件(您可能需要创建它),以指向我拥有的所有密钥。我的有以下几点:

1
2
3
4
5
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的手册页,它将按顺序尝试这些方法。我不确定我列出的前三个默认值是否需要存在,但我还是包含了它们。


由于MacOS 10.12.2,您可以使用UseKeychain选项。请阅读此处更多内容或查看man ssh_config

1
2
3
4
5
     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


我对macs没有太多的经验,所以不确定这个版本是否适合您,但请访问http://www.phil.uu.nl/~xges/ssh/

如果这个特定的应用程序不起作用,那就是你要找的东西——ssh agent。在类Unix的框中,您可能希望启动整个窗口管理器,以获得全局效果,但在OSX中可能不可能。

更多信息:http://www uxsup.csx.cam.ac.uk/~aia21/osx/leopard-ssh.html


sshkeychain是一种可能性。安装MacPorts时可以使用:

1
sudo port install sshkeychain

它使用钥匙链来存储密码,您可以在登录会话启动时启动它(在第一次启动时使用通常右键单击Dock图标+"启动时启动")。

请注意,苹果的SVN使用keychain来存储密码,但不一定是用macports构建的SVN二进制文件。


通过运行以下命令将密钥添加到密钥链:

1
ssh-add -K ~/.ssh/id_rsa

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

1
2
3
Host *
 AddKeysToAgent yes
 UseKeychain yes