Cha*_*ieH 1 security ssh keychain rsa macos
为了方便起见,我希望 MacOS 保留我的 RSA 密码,但不是无限期地保留(为了安全起见)。我相信 SSH 将使用此 SSH 配置的钥匙串访问
Host *
UseKeychain true
Run Code Online (Sandbox Code Playgroud)
我相信它将使用具有以下配置的ssh-agent :
Host *
AddKeysToAgent yes
Run Code Online (Sandbox Code Playgroud)
几个问题:
在开始之前,我们先澄清几点:
这种区别对于回答您的问题很重要。
- 似乎有两个选项:ssh-agent 或 Keychain Access。
不完全是。请参阅上面的说明。UseKeychain yes如果您在 中使用该指令~/.ssh/config,则连接到ssh-agent套接字的任何程序都将允许ssh-agent访问钥匙串以获取密码以解密您的私钥。如果您还使用该AddKeysToAgent yes指令,那么解密的密钥将存储在代理中以供将来使用。查看另一个相关问题也很有用。
...如果您需要临时存储密码的便利,标准是什么?
(据我所知)macOS 无法暂时存储密码。然而,可以得到一个部分令人满意的解决方案,达到几乎相同的效果——请参见下面问题 3 的答案。
- 如何识别并清除钥匙串访问中默认私钥的密码?我看到一个未命名的私钥,但我不想在不确定它是我存储的 SSH 密钥的情况下删除它。
如果您在 Mac 上打开“钥匙串访问”并搜索ssh,您可能不会看到 ssh 密钥密码。从 macOS Sierra (10.12) 开始,Apple 移动了ssh存储的钥匙串密钥。要查看它,您需要选择“查看>>显示不可见项目”,然后 ssh 密钥密码条目将可见。
您看到的“未命名私钥”很可能是其他 RSA(或 DSA)密钥。
- 如果我想定期清除任何私钥密码,最好的选择是什么?
ssh-add -D我可以在 cron 作业下使用。
虽然您可以执行ssh-add -Dcron 作业,并且它可能会执行您想要的一些操作,但它不会从钥匙串中删除密码短语。ssh-agent它只会清除所有解密私钥运行的内存。如果您UseKeychain yes的配置中有该密钥,ssh-agent下次需要时会很乐意重新解密该密钥(请参阅上面问题 1 的答案)。
满足您不希望解密密钥始终可用的隐含愿望的一种替代方法是关闭UseKeychain和AddKeysToAgent,如下所示:
Host *
UseKeychain no
AddKeysToAgent no
Run Code Online (Sandbox Code Playgroud)
然后,使用选项手动将ssh-agent具有有限生命周期的密钥添加到运行中,如下所示:-t <lifetime>ssh-add
ssh-add -t 4h ~/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)
这会将您的(默认)RSA 密钥添加到代理,其生命周期为 4 小时。四小时后,钥匙将自动移除。
据我所知,没有指令让您的用户~/.ssh/config指定添加到代理的任何密钥的默认生命周期,系统中也没有办法sshd_config。但是,可能有一种方法可以告诉 macOS 使用该选项以默认生命周期启动代理-t <lifetime>。对于勇敢者来说,启动代理 plist 文件存储在/System/Library/LaunchAgents/com.openssh.ssh-agent.plist.
另一种较旧的、可能仍然相关的方法是在睡觉时锁定钥匙链。
| 归档时间: |
|
| 查看次数: |
5443 次 |
| 最近记录: |