是否可以使用用于登录的 ssh 密钥在第三方应用程序中对用户进行身份验证?

Posted

技术标签:

【中文标题】是否可以使用用于登录的 ssh 密钥在第三方应用程序中对用户进行身份验证?【英文标题】:Is it possible to auth user in third party app with their ssh key used to login? 【发布时间】:2021-05-31 21:18:53 【问题描述】:

我正在编写使用强密码保护的 CLI 应用程序。用户应该通过 ssh 在安全边界内的服务器上运行它。我的用户抱怨每次都输入密码太烦人了。

我正在尝试确定是否可以使用用户的 ssh 密钥在我的应用程序中对其进行身份验证,而不是输入应用程序密码。我不能依赖$USER,因为我想将身份验证绑定到用户的 ssh 密钥。

我考虑过ssh-agent,但它在用户的机器上运行 afaik。我现在正在考虑 PAM,但不确定是否可以检查用户用于身份验证的密钥。

任何人都可以建议它是否可能以及在哪里进行研究?

【问题讨论】:

什么密码? SSH 密码?那么它与您的应用程序有什么关系呢?我知道用户首先登录到 SSH,然后在远程服务器上执行您的应用程序。 我的意思是应用程序密码。用户运行应用程序,输入密码,应用程序输出一些结果。 “我了解用户首先登录到 SSH,然后在远程服务器上执行您的应用程序”。是的,这是对的。用户使用 SSH 密钥登录远程服务器。我希望我的应用程序确保用户使用预定义的 SSH 密钥集而不是输入密码登录 Imo,这个比较适合Super User或者Unix & Linux。 可以交叉发布吗? 正如您从该问题的答案中看到的那样,没有更好的解决方案,至少没有库存的 OpenSSH SSH 服务器。如果您需要更好的解决方案,您需要更可定制的 SSH 服务器。 【参考方案1】:

作为 Martin Prikryl commented,除了安装自定义 OpenSSH 服务器之外,没有其他可靠的解决方案。此外,可能无法以密码方式证明用户使用特定密钥登录系统。

设置环境变量(以任何方式)不足以证明用户确实拥有它。

【讨论】:

以上是关于是否可以使用用于登录的 ssh 密钥在第三方应用程序中对用户进行身份验证?的主要内容,如果未能解决你的问题,请参考以下文章

linux下ssh免密码登录设置

基于秘钥的登录认证

SSH是否允许用户在没有密码和密钥的情况下登录?

SSH 隧道:第一跳用户名/密码,第二跳使用 SSH 密钥

Linux——配置服务器间的免密登录

配置SSH免密钥登录