【问题标题】:.ssh/config: "Bad configuration option: UseKeychain" on Mac OS Sierra 10.12.6.ssh/config:Mac OS Sierra 10.12.6 上的“错误配置选项:UseKeychain”
【发布时间】:2018-05-07 09:47:18
【问题描述】:

我正在尝试在 Mac (Mac OS Sierra 10.12.6) 上设置我的 ssh 配置,以便将我的 ssh 密钥的密码存储在钥匙串中。以前我可以这样做

ssh-add -K ~/.ssh/id_rsa

但是最近这似乎不再起作用了。在this article 之后,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

任何想法为什么会发生这种情况以及如何解决它?谢谢!

【问题讨论】:

  • 令人惊讶的是,Github 的官方文档如何让您直接陷入此错误。

标签: macos ssh macos-sierra


【解决方案1】:

尝试指定另一个选项,即IgnoreUnknown,如下所示:

Host *
  IgnoreUnknown UseKeychain
  UseKeychain yes

您可以找到有关此here 的更多信息。

如果您已有 IgnoreUnknown 值,请使用逗号分隔值

Host *
  IgnoreUnknown AddKeysToAgent,UseKeychain
  AddKeysToAgent yes
  UseKeychain yes

如果您有多个使用UseKeychain 选项的Host 配置,请确保将

Host *
  IgnoreUnknown UseKeychain

在使用该选项的第一个主机之前,例如把它放在文件的顶部。

【讨论】:

  • 暂时通过ssh -F /dev/null ...绕过配置文件,它对我有用。
  • 添加 IgnoreUnknown UseKeychain 仍然对我不起作用,所以我完全删除了 UseKeychain yes 并且它起作用了。但不确定这是最好的方法。
  • 这个解决方案对我有用,但我不明白为什么会突然发生这种变化?我只登录到我的 DigitalOcean 帐户。
  • 与其写“您可以在此处找到有关此的更多信息。”,不如具体了解该选项的作用以及为什么它会很有用:“如果您与运行旧版本 OpenSSH 且不理解 UseKeychain 选项的系统共享您的 ssh 配置,您可以指定 IgnoreUnknown 选项以保持您的配置与两者兼容新旧版本” - developer.apple.com/library/archive/technotes/tn2449/…
  • Apple 文档说 UseKeychain 选项是在 macOS Sierra 10.12 中引入的。那么为什么(或在什么情况下)在 macOS Big Sur 11.4 中会出现这个错误?
【解决方案2】:

接受的答案帮助了我,但并没有完全解决我的问题,因为我有多个不好的选择。如果您遇到此问题,下面是一个示例:

Host *
  IgnoreUnknown AddKeysToAgent,UseKeychain
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_rsa

【讨论】:

  • 只想把它留在这里:我也遇到了远程连接问题,结果证明是问题所在。该问题是通过使用 Bitbucket 的 Sourcetree 工具产生的,我已将其卸载但留下了阻止远程连接的残余
  • 谢谢!在 MacOS mojave 10.14.6 上工作
  • 为什么会这样?我有同样的问题,这个答案解决了它,但我仍然不知道为什么会这样,或者为什么我首先遇到了问题..
【解决方案3】:

我刚刚注释掉了这一行,scp/ssh 又开始为我工作了。

【讨论】:

  • 哪一行?请留下更有意义的留言
  • OP 写道“任何想法为什么会发生这种情况以及如何解决它?谢谢!”,但这个答案没有回答 why 也没有提供 修复如何保持所需功能(macOS 钥匙串集成)没有错误。
  • 删除 UseKeychain 和 AddKeysToAgent 现在似乎工作正常,并且运行 ssh-add -l 不会产生任何身份。不知道为什么它在工作。也许重启后就不会了?
【解决方案4】:

代替 ssh-add 输入“open .ssh/id_rsa”并将其添加到钥匙串中

UseKeychain 选项在我的配置中从未出现过如此糟糕的情况,但我一开始在任何其他主机之前都有以下内容

Host *
UseKeychain yes 

Host (...)

【讨论】:

  • 仅供参考,我认为这是错误的顺序。如果你这样写,你的* 规则将被忽略。 man ssh_config 说,“由于使用了每个参数的第一个获取值,因此应在文件开头附近给出更多特定于主机的声明,并在末尾给出一般默认值。”
  • 仅供参考,近十年来,我已经拥有数十台服务器,但从未出现过问题。我每天 ssh 到这么多服务器。但是,如果有人发现该配置存在现实生活中的问题,那么也许就是这样。
【解决方案5】:

大写-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)

【讨论】:

  • ssh-add 至少在 macOS 上确实有 -K 选项。 man ssh-add:-K When adding identities, each passphrase will also be stored in the user's keychain. When removing identities with -d, each passphrase will be removed from it.
【解决方案6】:

我遇到了同样的问题,我意识到当按照说明开始生成密钥时。第一步就是这个。

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

我没有更改电子邮件地址,但我当然忘记了:D。所以请确保不要忘记这一步,一切都会好起来的。

【讨论】:

  • 这不是一个普遍适用的解决方案。
猜你喜欢
  • 2018-05-03
  • 1970-01-01
  • 1970-01-01
  • 2013-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多