我正在尝试在 Mac (Mac OS Sierra 10.12.6) 上设置 ssh 配置,以便将 ssh 密钥的密码存储在钥匙串中。以前我可以用
做到这一点ssh-add -K ~/.ssh/id_rsa
但最近这个似乎不再起作用了。在本文之后,Mac OS > 10.12.2 中的 ssh 配置行为似乎发生了变化,解决此问题的建议方法是将
UseKeychain yes
添加到您的 ssh 配置中。这是我的 .ssh/config
部分 Host *
:
Host *
Port 22
ServerAliveInterval 60
ForwardAgent yes
IdentityFile ~/.ssh/id_rsa
AddKeysToAgent yes
UseKeychain yes
当尝试 ssh 到外部主机时,我收到以下错误消息:
$ ssh my-host
/Users/USER/.ssh/config: line 16: Bad configuration option: usekeychain
有什么想法为什么会发生这种情况以及如何解决它吗?谢谢!
尝试指定另一个选项,即
IgnoreUnknown
,如下所示:
Host *
IgnoreUnknown UseKeychain
UseKeychain yes
您可以在此处找到更多相关信息。
如果您已有
IgnoreUnknown
值,请使用逗号分隔值
Host *
IgnoreUnknown AddKeysToAgent,UseKeychain
AddKeysToAgent yes
UseKeychain yes
如果您有多个使用
Host
选项的 UseKeychain
配置,请确保放置
Host *
IgnoreUnknown UseKeychain
在第一个使用该选项的主机之前,例如把它放在文件的顶部。
如果您不想(或不能)修改 SSH 配置文件,也可以在命令行连接时传递此选项:
ssh -o IgnoreUnknown=UseKeychain my-host
接受的答案对我有帮助,但并没有完全解决我的问题,因为我有多种不好的选择。以下是您遇到此问题时可能出现的情况的示例:
Host *
IgnoreUnknown AddKeysToAgent,UseKeychain
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa
不要使用 ssh-add 类型,而是输入“open .ssh/id_rsa”并将其添加到钥匙串中
UseKeychain 选项在我的配置中从未出现过那么糟糕,但我一开始就在任何其他主机之前使用了以下内容
Host *
UseKeychain yes
Host (...)
只是相关说明,如果您的配置有多个
Host
条目,您应该在文件顶部设置 IgnoreUnknown
仅一次 - 否则您会再次收到错误 Bad configuration option: usekeychain
。例如:
Host *
IgnoreUnknown UseKeychain
我有一个类似的问题,通过删除配置前面的前导空格来解决,例如:
Host *
UseKeychain yes
对
Host *
UseKeychain yes
接受的答案对我不起作用,我还必须更改主机模式。我遵循 GitHub 的文档并使用:
Host *.github.com
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_ed25519
建议的修复:
Host *.github.com
IgnoreUnknown AddKeysToAgent,UseKeychain
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_ed25519
没用。去掉
.github.com
部分后才起作用:
Host *
IgnoreUnknown AddKeysToAgent,UseKeychain
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_ed25519
不知道为什么。
这可能是因为你使用的是用brew安装的东西。检查使用
which ssh
并确保您使用的是 Apple 版本:/usr/bin/ssh
/usr/bin/ssh -T [email protected]
我刚刚注释掉了该行,scp/ssh 又开始为我工作了。
我遇到了同样的问题,我意识到当开始按照说明生成密钥时。第一步是这样的。
ssh-keygen -t rsa -b 4096 -C "[email protected]"
我没有更改电子邮件地址,但我当然忘记了这样做:D。所以一定不要忘记这一步,一切都会好起来的。
是大写-K 尝试小写-k!!
ssh-add -k ~/.ssh/id_rsa
Enter passphrase for /Users/tom/.ssh/id_rsa:
Identity added: /Users/tom/.ssh/id_rsa (/Users/tom/.ssh/id_rsa)