我想使用双因素身份验证为登录 SSH 服务器 (Ubuntu) 添加一层安全保护。用户连接到 SSH 服务器的一个特殊之处在于,有时他们会以非交互方式进行连接:SSH 服务器在用户的 MySQL 客户端中配置为用作访问数据库的堡垒/代理。因此,我正在寻找不需要用户在终端中输入任何内容的 2FA 设置。
一个理论上看起来很有希望的现有解决方案是 Google 的电话提示,允许用户验证连接。每个 SSH 用户都会与一个电话号码相关联,并且这个电话号码会在每次连接时收到验证提示。
这个想法的一个明显缺点是,听起来它需要开发一个手机应用程序,这会使其变得过于复杂和昂贵。我可以使用其他技术来允许用户验证非交互式 SSH 登录吗?
答案1
您可以使用 SSH-CA 颁发临时的短期 OpenSSH 用户证书,该证书仅在几个小时内有效。用户必须通过使用您喜欢的任何 MFA 解决方案进行身份验证来请求证书。SSH 证书和私钥将加载到 SSH 密钥代理中,并可在用户证书过期之前使用。
目前有多种 SSH-CA 实现,我的心电图诊断就是其中之一。YMMV。