linux - 我可以在非 ssh 应用程序中使用 ssh key 进行身份验证吗?

标签 linux node.js authentication tcp ssh-keys

我有一个由客户端和服务器部分组成的应用程序,它们由互联网分隔,我在其中控制服务器,但需要对客户端连接进行身份验证。客户端通过 TCP 连接连接到服务器,然后交换 JSON 消息。客户端不是基于浏览器的应用程序,它是运行在 Linux 服务器上的 headless Node.js 应用程序。

我想对连接实现一些身份验证。我的想法是(类似于 github)授权用户(通过单独的门户)可以将他们的 ssh 公钥添加到他们将在其上运行客户端的 Linux 计算机的服务器端数据库中,然后我想在 TCP session 建立期间使用这些 ssh key 进行身份验证。这有道理吗?我不熟悉使用 ssh key 对对 ssh 以外的应用程序进行身份验证,因此我不确定如何实现这一点。另外,我想知道是否有替代的“最佳实践”或人们可能对此类应用程序实现身份验证的建议。我想保护服务器及其资源免受未经授权的客户端访问。欢迎任何/所有想法

最佳答案

你没有提到你的客户端是如何使用的——如果它是全部自动化的或者如果有用户手动启动应用程序——但从技术上讲,你的解决方案将是一个有效的(而且可能并不太罕见)的解决方案:你可以让 SSH 客户端通过互联网为你的 TCP 通信建立一个隧道,并让你的应用程序连接到该隧道的本地监听套接字端。因此,身份验证(以及隐式加密)将由 SSH 处理,除了连接到不同的主机 (localhost) 之外,您的应用程序将完全不知道这一点。

关于linux - 我可以在非 ssh 应用程序中使用 ssh key 进行身份验证吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24207919/

相关文章:

arrays - 在 bash 中覆盖二维数组单元格

node.js - NodeJS - 如何在不将文件保存在服务器上的情况下从 Base64 返回 PDF?

java - java 和 .net 应用程序之间的身份验证

Azure Web 应用程序身份验证/授权问题

swift - 登录警报 swift 2.0 后打开一个新的 View Controller

c - 在 Linux 内核中实现正确的模块间同步

linux - OSX Mojave sysctl -p 非法

c++ - Qt - 错误 : unknown module networkauth

node.js - 在哪里存储访问 token 以及如何跟踪用户(在 Http only cookie 中使用 JWT token )

node.js - Node Js : Redis job is not completing after finish its task