是否有基于令牌的 ssh 公钥/私钥协议替代方案?

是否有基于令牌的 ssh 公钥/私钥协议替代方案?

因此,据我所知,如果您不生成新的密钥对,ssh 公钥就不会过期。有没有办法在一定时间内授予客户端访问权限?比如基于令牌的身份验证。所以基本上,我感兴趣的是,您可以制作一个“可过期的公钥”吗?

答案1

简短回答

是的,有两种常见机制:Kerberos 和短期 SSH 证书。(搜索“SSH 证书颁发机构”。)

长答案

你实际上并不需要一种新的身份验证方法,只要 SSH服务器软件允许强制执行常规密钥的某些过期方式。OpenSSH 有多种机制来实现此目的:

  1. 你可以取出钥匙从服务器端authorized_keys文件手动或使用 cronjob。如果密钥是访问服务器的唯一方式,或者您重新配置了 sshd 以将密钥存储在 root 拥有的位置(而不是 ~/.ssh/),则用户无法简单地将其添加回来。

  2. 在较新的 OpenSSH 服务器版本中,您可以通过expiry-time=向 authorized_keys 条目添加选项来实现此自动化。(请参阅SSHD(8).)与上述相同,如果这是最后一个密钥或者authorized_keys文件位于用户不可写的地方,则会阻止用户简单地编辑设置。

  3. 您可以生成密钥撤销列表使用 ssh-keygen。通过启用 /etc/ssh/sshd_config 选项,配置服务器以检查所有密钥。RevokedKeys用户无法绕过密钥撤销 - 它只是覆盖 authorized_keys 条目。

  4. 实际上会生成一种内置了有效期的特殊密钥类型 - “证书”。目前这还需要客户端使用 OpenSSH,因为其他客户端尚未实现发送证书的支持。

    -sOpenSSH 证书的工作原理与 TLS X.509 证书非常相似:它们由“证书颁发机构”颁发,在本例中,证书颁发机构是服务器的所有者。请参阅ssh-keygen(1)– 您可以指定有效时间、允许的用户名等,OpenSSH 服务器将强制执行它们。

  5. 与方法 #4 类似,存在 SSH 客户端和服务器(例如 PKIX-SSH),可让您使用实际的X.509 证书用于公钥认证,当然它们还强制执行嵌入在这些证书中的“到期时间”参数。

也就是说,SSH 中有基于令牌的身份验证机制:

  • Kerberos 5 是一种常用的基于“票证”的机制。(它实际上基于共享密钥。)您可以使用以下方式从身份验证服务器获取短期票证kinit- 默认有效期为 10 小时 - 并且可以使用“GSSAPI”身份验证方法将它们与 SSH 一起使用。

  • Globus GSI 是另一种基于 GSSAPI 框架的机制(尽管由于后者开发人员的不当选择,它需要在其基础上打补丁的 OpenSSH 版本)。它比 Kerberos 少见得多,实际上只在学术“网格”环境中见过。

  • 最后,我将 OpenSSH 公钥证书归入同一类别,因为如今许多大型网站确实将它们视为短期令牌 - 您会发现可以自动颁发为期一天的证书的软件,类似于 Kerberos 和 GSI。(示例:云FlareNetflix

相关内容