SVN+SSH,不用每次都做 ssh-add 吗? (苹果系统)
Posted
技术标签:
【中文标题】SVN+SSH,不用每次都做 ssh-add 吗? (苹果系统)【英文标题】:SVN+SSH, not having to do ssh-add every time? (Mac OS) 【发布时间】:2010-12-26 22:47:08 【问题描述】:我知道答案就在那里,但我是个 Unix 笨蛋,如果它正中我的脸,我可能无法识别解决方案。
我在 Mac 上,通过 SSH 隧道连接到 SVN 服务器。每次我想连接到 SVN 服务器时,我都必须ssh-add privateKey.txt
(Cornerstone 和 Xcode 都连接到 SVN)。
有没有办法在某处“保存”密钥,这样我就不必每次都这样做了?将其添加到我的钥匙串中?一些配置文件?启动脚本?
【问题讨论】:
【参考方案1】:通过运行将您的钥匙添加到钥匙串中:
ssh-add -K ~/.ssh/id_rsa
并编辑您的 ssh 配置 (~/.ssh/config
) 文件以自动将密钥从密钥链加载到 ssh 代理(AddKeysToAgent yes
选项)并将密码短语存储在密钥链中(UseKeychain yes
选项):
Host *
AddKeysToAgent yes
UseKeychain yes
【讨论】:
【参考方案2】:从 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
【讨论】:
这需要上去。 非常重要!【参考方案3】:在钥匙串中存储密码
要将默认密钥的密码存储在钥匙串中,请打开终端并运行:
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
【讨论】:
【参考方案4】:经过多次探索,我想我已经完全找到了这个问题的答案。首先,确保您使用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,它会按顺序尝试这些。我不确定我列出的前三个默认值是否需要在那里,但无论如何我已经包含了它们。
【讨论】:
Mac os x 上没有-K
标志ssh-add
在 OS X 上有一个-K
标志,用于ssh-add
。除此之外,这应该是选定的答案。
确保使用/usr/bin/ssh-add
提供的自制软件/usr/local/bin/ssh-add
不提供-K 选项。
一旦出现~/.ssh/config
,重启机器后无需每次运行ssh-add
命令。【参考方案5】:
sshkeychain 是一种可能性。使用 macport 安装良好:
sudo port install sshkeychain
它使用钥匙串来存储密码,您只需在登录会话启动时启动它(在第一次启动时使用通常的右键单击扩展坞图标 +“启动时启动”)
请注意,Apple 的 svn 使用钥匙串来存储密码,但不一定是您使用 macports 构建的 svn 二进制文件。
【讨论】:
【参考方案6】:首先,将您的私钥文件移动到~/.ssh
。这不是绝对必要的,但它是此类事情的标准位置。
然后运行ssh-add -K ~/.ssh/privateKey.txt
。如有必要,它会提示您输入密码,然后将其添加到您的钥匙串中。
在那之后,你不应该做任何其他事情。 here 提供稍长的解释。
【讨论】:
我认为值得注意的是,这是 Mac 的东西,而不是通用的 Unix 东西。在 Ubuntu 上,ssh-add
不能接受 -K
参数。
我想指出,虽然链接的文章适用于 Leopard,但它仍然适用于 OS X Mavericks。
出于某种原因,当我执行 -K 时,重启后仍然有问题
您使用的是 macOS Sierra 吗?行为发生了变化,您现在需要在登录时将密钥显式添加到 ssh-agent:github.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain【参考方案7】:
我没有太多使用 mac 的经验,所以不确定这个版本是否适合你,但看看http://www.phil.uu.nl/~xges/ssh/
如果这个特定的应用程序不起作用,那么这就是您正在寻找的东西 - ssh agent
。在类似 unix 的盒子上,您可能希望通过它启动整个窗口管理器,以获得全局效果,但在 osx 中可能无法实现。
更多信息:http://www-uxsup.csx.cam.ac.uk/~aia21/osx/leopard-ssh.html
【讨论】:
以上是关于SVN+SSH,不用每次都做 ssh-add 吗? (苹果系统)的主要内容,如果未能解决你的问题,请参考以下文章