Devlog:通过OAuth2进行SSH身份验证

2021-04-14 11:15:48

传统上,SSH通过许多方法支持身份验证。通常,您' d使用密码或ssh键登录。但是,其他方法也是可能的:键盘交互式可用于询问连接用户一系列问题。例如,这可以用于两个因子认证。 GSSAPI认证允许使用例如通过登录Windows域来使用的Kerberos令牌以用作SSH凭据。

当SSH是由TatuYlönen于1995年首次发明的,大多数终端窗口的大小为80乘25个字符。 Netscape Navigator几乎没有一年的历史,以及单一登录Weren'即使在地平线上也是如此。

当然,SSH协议多年来发展,但即使是最近的RFC'已经实现的最新RFC'

传统上,大型企业(Telco Providers等)依赖于强大的防火墙规则,将其管理(SSH)访问互联网。在一些情况下,例如通过从中央LDAP服务器或通过配置管理进行身份验证,实现中央认证。这是唯一的例外,只有在PCI-DS等安全标准时才执行。

由于公司在近年来进入云端的传统网络环境将传统的网络环境感到困境,访问控制变得越来越多的问题。但是,这不是一个新问题。 SAML于2005年推出,但证明是一个笨重的XML野兽,难以实施。

最近OpenID Connect(OIDC)成为OAuth2非常流行的加载项,以管理单一登录需求。 (这不与传统的OpenID混淆,这两者无关。)Microsoft Active Directory联合服务提供OIDC支持以及SAML 2.0,Kubernetes还支持OIDC作为管理员的身份验证方法。

当然,您可以使用GSSAPI使用Windows域提供自动登录功能,但在带上您自己的设备时,' s不再合适。

好的,所以它和#39; s不是1995,我们如何通过基于浏览器的身份验证流程来获得SSH进行身份验证?

该关键在于RFC 4256中描述的键盘交互式身份验证方法。此方法几乎所有SSH客户端都支持,并为SSH服务器提供了向客户端发送客户端需要回答的问题列表的能力。它还允许服务器发送客户端指令文本。此指令文本可用于显示客户端链接。

从这里'非常简单。选项一个是授权码流:客户端登录Web浏览器,然后必须将代码复制回他们的控制台。 SSH服务器检查他们的身份,' s。看到这个17秒的视频。

选项二是设备代码流,其中用户被发送到链接,并且必须从SSH控制台输入代码。在这里,我们发送一个问题,我们只是轮询了要输入的代码的Auth令牌端点。看到这25秒的视频。

后者还将借助显示QR码,但不幸的是,openSSH将指令字段的长度限制为255个字符,也可以支持UTF-8。

WinScp显示指令文本,但链接不可点击或复制。 Winscp的作者向我们发送了一个包含此功能的预览版本。

Filezilla表现出类似的链接破损作为腻子,但它也重复所有&字符也是如此。这已在夜间构建中得到了修复。如果没有任何问题,它也不会显示说明。这是设备流程所必需的。

TERMIUS根本不会在移动设备上显示指令字段,并且不允许复制或单击桌面上的链接。 此问题已转发到其开发团队。 Bitvise不会使其复制或单击链接。 他们正在作为一个错误来解决这个问题。 很快。 我们没有精确发布日期,它' s未知的领域,我们希望至少等待更受欢迎的SSH客户端来释放对此功能的全部支持。 我们要感谢每个帮助这个项目的人,输入和测试。