我知道答案就在那里,但是我非常愚蠢,如果碰到我的话,可能会认不出解决方案。
我在Mac上,通过SSH隧道连接到SVN服务器。每次我想要连接到SVN服务器时,我都必须ssh-add privateKey.txt
(两个Cornerstone和Xcode都连接到SVN)。
有没有办法在某处“保存”密钥,所以我不必每次都这样做?把它添加到我的钥匙串?一些配置文件?启动脚本?
答案 0 :(得分:172)
首先,将您的私钥文件移至~/.ssh
。这不是绝对必要的,但它是这类事情的标准场所。
然后运行ssh-add -K ~/.ssh/privateKey.txt
。如有必要,它会提示您输入密码,然后将其添加到您的钥匙串中。
之后,你不应该做任何其他事情。有一个稍长的解释here。
答案 1 :(得分: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
答案 2 :(得分:19)
经过多次探索,我想我已经完全找到了这个问题的答案。首先,请确保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的man page,它会按顺序尝试这些。我不确定我列出的前三个默认值是否需要在那里,但无论如何我都包括它们。
答案 3 :(得分:5)
从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
答案 4 :(得分:2)
我对mac没有太多经验,所以不确定这个版本是否适合您,但请查看http://www.phil.uu.nl/~xges/ssh/
如果此特定应用不起作用,那就是您正在寻找的 - ssh agent
。在类似unix的盒子上,你想要通过它来启动整个窗口管理器,以获得全局效果,但在osx中可能无法实现。
更多信息:http://www-uxsup.csx.cam.ac.uk/~aia21/osx/leopard-ssh.html
答案 5 :(得分:1)
sshkeychain是一种可能性。使用以下命令安装macports:
sudo port install sshkeychain
它使用钥匙串存储密码,您可以在登录会话启动时启动它(在第一次启动时使用通常右键单击Dock的图标+“启动时启动”)< / p>
请注意,Apple的svn使用keychain存储密码,但不一定是使用macports构建的svn二进制文件。
答案 6 :(得分:0)
通过运行以下命令将您的钥匙添加到钥匙串中:
ssh-add -K ~/.ssh/id_rsa
并编辑您的ssh config(~/.ssh/config
)文件,以将密钥从密钥链自动加载到ssh-agent(AddKeysToAgent yes
选项)并将密码短语存储在密钥链中(UseKeychain yes
选项):
Host *
AddKeysToAgent yes
UseKeychain yes