ssh-agent 缺少类似 sudo 的不活动/空闲超时功能是否存在技术原因?

csi*_*ac2 9 security ssh key-authentication ssh-agent

ssh-agent -t在 [1] 中有一些关于现有功能的简短讨论,早在 2001 年 debian-devel [2] 上就有一个帖子希望有一个不活动超时功能。在 SE [3] 上有一个类似的讨论,用于选美。

我不得不想知道地球上的其他地方是如何保护 ssh 密钥的——我是否遗漏了一些明显的东西,这对我来说是一个痛点,而且显然没有其他人?具体来说,我正在考虑脚本化的 ssh 交互,例如使用 ansible。看来今天,你的选择是:

  • 将您的密钥在代理中的生命周期设置为令人担忧的长时间,例如。1 小时或任何脚本的最大运行时间(我怀疑很多人允许他们的 sudo 重新验证超时延长那么长时间!)-但是seahorse/gnome-keyring-daemon几乎不支持这么多 [4]
  • 照看您长时间运行的脚本,并每隔 5/10/15 分钟不断重新输入密码:现在您可以轻松地看到每天输入密码 20 次
  • 破解你自己的自制解决方案来模仿这个缺失的功能,也许结合你的 shell 的TMOUTshell var(感谢 freenode #openssh IRC 上的人的建议)
  • 根本没有设置密钥生命周期,即您的代理会永远加载您的密钥或直到您杀死/重新启动

如果您使用简短的 ssh 代理超时、强密码短语和不同的密钥文件来为您进行身份验证的每种角色类型:这将导致非常令人沮丧的一天!

我已经尝试过 gpgkey2ssh 和智能卡,但这并不能真正解决这个特定问题:我仍然需要 ssh-agent 功能,而且我不想每 5 分钟重新验证一次以防止我的私钥被暴露在我的电脑空闲时在内存中。

我做错了吗?

[1]配置SSH代理的默认超时时间

[2] https://lists.debian.org/debian-devel/2001/09/msg00851.html

[3] https://serverfault.com/questions/518312/putty-pageant-forget-keys-after-period-of-inactivity

[4] https://bugs.launchpad.net/ubuntu/+source/gnome-keyring/+bug/129231

Mar*_*tri 2

如果您担心这个问题,那么您可以轻松地使用该界面在屏幕锁定时xscreensaver-command -watch运行。ssh-add -D检查手册页以获得一个非常简单的示例。