Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 在其他应用程序中使用ssh密钥进行身份验证?_Unix_Authentication_Ssh Keys - Fatal编程技术网

Unix 在其他应用程序中使用ssh密钥进行身份验证?

Unix 在其他应用程序中使用ssh密钥进行身份验证?,unix,authentication,ssh-keys,Unix,Authentication,Ssh Keys,假设我想为一个简单的网络服务设置一个穷人身份验证方案 我不想麻烦用户名/密码验证,为了简单起见,我只想在我的应用程序中有一个公钥列表,任何能够证明自己是该密钥所有者的人都可以使用我的服务 就我的应用程序而言,这将大大简化身份验证过程,因为我的所有用户都在本地网络上,并且都使用Unix。任何时候当我加入一个新用户时,我都可以要求他们提供ssh公钥 有没有一种简单的方法可以在非ssh应用程序中重用ssh公钥身份验证中涉及的机制?这是一个与语言无关的问题。假设您讨论的是基于web的应用程序。您真正需要

假设我想为一个简单的网络服务设置一个穷人身份验证方案

我不想麻烦用户名/密码验证,为了简单起见,我只想在我的应用程序中有一个公钥列表,任何能够证明自己是该密钥所有者的人都可以使用我的服务

就我的应用程序而言,这将大大简化身份验证过程,因为我的所有用户都在本地网络上,并且都使用Unix。任何时候当我加入一个新用户时,我都可以要求他们提供ssh公钥


有没有一种简单的方法可以在非ssh应用程序中重用ssh公钥身份验证中涉及的机制?这是一个与语言无关的问题。

假设您讨论的是基于web的应用程序。您真正需要的是X.509客户端证书(1.3.6.1.5.5.7.3.2)。这将允许您在应用程序中单独标识用户

这些问题与查看密钥分发时通常面临的问题相同。这通常被认为是一个难题

如果你想沿着这条路走下去,这就是你需要做的

  • 生成根证书(一次)
  • 使用适当的模块设置web服务器以解析证书(nginx/apache)
  • 为每个用户生成证书(openssl)
  • 从集中式服务器下载cerificiate。(此处可能使用他们的ssh pub密钥)
  • 本地安装x509证书(取决于操作系统)
在服务器端,您需要将证书作为web服务器的一部分进行处理(nginx或apache应该有相应的模块),然后将名称作为头字段传递到应用程序中,然后您可以在内部进行处理


这是一个比用户名和密码好得多的安全解决方案,但是由于密钥分发问题,它很复杂。大多数人不会为此烦恼,因为在大多数应用程序中,将登录与LDAP或radius集成起来非常容易。

如果您只有一个可以使用您的应用程序的用户列表,而不需要查看谁做了什么

您可以设置服务器,使其仅在本地主机(127.1)而不是0.0.0.0上侦听,并提供受限的sshd,转发连接到应用程序所需的端口

~/.ssh/authorized_keys
将提供可使用的授权密钥列表

 ssh -I private_key_file <hostname> -L 3000:localhost:3000
ssh-I私有密钥文件-L 3000:localhost:3000
有关配置sshd的基本设置和帮助,请查看以下答案:


注意:请注意,如果您不将其锁定,任何用户都可以完全访问您的机器所在的机箱。

我头脑中的一个肮脏的黑客:您能否包装该应用程序,以便它创建一个从本地主机到服务器的实际SSH隧道,并将其用于以下目的