MacOS 钥匙串访问无限期保留 SSH 密码

MacOS 钥匙串访问无限期保留 SSH 密码

为了方便起见,我希望 MacOS 保留我的 RSA 密码,但不是无限期地保留(出于安全考虑)。我相信 SSH 将使用钥匙串访问使用此 SSH 配置

Host *
     UseKeychain true

我相信它将利用ssh 代理使用以下配置:

Host *
     AddKeysToAgent yes

几个问题:

  1. 似乎有两个选择:ssh 代理或者钥匙串访问. 如果您需要便利暂时地存储密码,标准是什么?
  2. 如何在 Keychain Access 中识别和清除默认私钥的密码?我看到一个未命名的私钥,但我不想在不确定它是我存储的 SSH 密钥的情况下删除它
  3. 如果我想定期清除任何私钥密码,最好的选择是什么?我可以使用ssh-添加-D在 cron 任务下

答案1

在开始之前,我们先澄清几点:

  • macOS 允许你存储私钥密码短语在 macOS 钥匙串中。
  • ssh-agent(在 macOS 或任何系统上)保存解密私钥在记忆中

区别对于回答您的问题很重要。

  1. 似乎有两个选项:ssh-agent 或 Keychain Access。

不完全是。请参阅上面的说明。如果您UseKeychain yes在 中使用指令~/.ssh/config,则任何连接到套接字的程序ssh-agent都将允许ssh-agent进入 Keychain 获取密码以解密您的私钥。如果您使用指令AddKeysToAgent yes,则解密的密钥将存储在代理中以供将来使用。参见另一个相关问题

...如果需要临时存储密码的便利,标准是什么?

据我所知,macOS 没有办法存储密码暂时地。然而,可以得到一个部分令人满意的解决方案,并达到几乎相同的效果——请参阅下面问题 3 的答案。

  1. 如何在 Keychain Access 中识别和清除默认私钥的密码?我看到一个未命名的私钥,但我不想在不确定它是我存储的 SSH 密钥的情况下删除它。

如果您在 Mac 上打开 Keychain Access 并搜索ssh,您可能看不到您的 ssh 密钥密码。从 macOS Sierra (10.12) 开始,Apple 移动了ssh存储的钥匙串密钥。要查看它,您需要选择“查看 >> 显示不可见项目”然后 ssh 密钥密码条目将会可见。

您看到的“未命名私钥”很可能是其他 RSA(或 DSA)密钥。

  1. 如果我想定期清除任何私钥密码,最好的选择是什么?我可以ssh-add -D在 cron 作业下使用。

虽然你可以把它放到ssh-add -D一个 cron 任务中,它可能会做一些你想要做的事情,但它不会删除密码短语从钥匙串中删除。它只会清除ssh-agent所有正在运行的解密私钥。如果UseKeychain yes您的配置中有,ssh-agent下次需要时会很乐意重新解密密钥(请参阅上面问题 1 的答案)。

满足您不想一直拥有解密密钥的隐含愿望的一种替代方法是关闭UseKeychainAddKeysToAgent,如下所示:

Host *
  UseKeychain no
  AddKeysToAgent no

然后,使用选项手动将密钥添加到您的运行中ssh-agent并限制其生命周期,如下所示:-t <lifetime>ssh-add

ssh-add -t 4h ~/.ssh/id_rsa

这会将您的(默认)RSA 密钥添加到代理,有效期为 4 小时。四小时后,密钥将被自动删除。

据我所知,没有指令让用户~/.ssh/config指定添加到代理的任何密钥的默认生存期,系统中也没有方法sshd_config。但是,可能可以使用选项来告诉 macOS 以默认生命周期启动代理-t <lifetime>。对于勇敢者来说,启动代理 plist 文件存储在 中/System/Library/LaunchAgents/com.openssh.ssh-agent.plist

其他较旧的、可能仍然相关的方法睡觉时锁上钥匙链。

相关内容