MacOS Keychain Access无限期地保留SSH密码


0

为方便起见,我希望MacOS能够保留我的RSA密码,但不能无限期地(为了安全起见)。我相信SSH将使用此SSH配置的Keychain Access

Host *
     UseKeychain true

我相信它将使用ssh-agent与此配置:

Host *
     AddKeysToAgent yes

几个问题:

  1. 似乎有两种选择:ssh-agentKeychain Access。如果您需要临时存储密码短语的便利,标准是什么?
  2. 如何识别和清除Keychain Access中默认私钥的密码?我看到一个未命名的私钥,但我不想删除它而不确定它是我存储的SSH密钥
  3. 如果我想定期清除任何私钥密码,最好的选择是什么?我可以在cron作业下使用ssh-add -D

Answers:


1

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

  • macOS将允许您将私钥密码存储在macOS 密钥链中。
  • ssh-agent(在macOS或任何系统上)将解密的私钥保存在内存中

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

  1. 似乎有两种选择:ssh-agent或Keychain Access。

不完全是。见上文澄清。如果你UseKeychain yes在你的指令中使用该指令~/.ssh/config,那么连接到ssh-agent套接字的任何程序都将允许ssh-agent进入密钥链以便密码来解密你的私钥。如果您使用该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>选项to ssh-add,在有限的生命周期内手动为您的运行添加密钥,如:

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

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

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

另一种较旧的,可能仍然相关的方法是在睡觉时锁定钥匙串。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.