如何使用 SSH 登录 Web 应用程序?

如何使用 SSH 登录 Web 应用程序?

是否可以将 Web 应用程序的登录信息挂接到 SSH 服务器?我希望能够访问挂接到 SSH 用户组的 Web 控制面板。他们可以使用与普通 SSH 帐户相同的密码登录控制面板。它不需要为他们提供 SSH 访问权限 - 只需进行用户名/密码验证即可。理想情况下,当他们访问控制面板时,它可以使用他们的 SSH 密钥自动登录,但我对此是否可行表示怀疑。

答案1

在很大程度上,您的问题可以理解为:我希望我的 Web 应用程序能够根据系统用户数据库(/etc/passwd/etc/shadow/etc/group)对用户进行身份验证,就像 SSH 一样。Linux 系统身份验证层的术语是 PAM,即可插入身份验证模块。

最快的方法可能是配置 Apache 以提供 PAM 支持。一种方法是运行验证码mod_authnz_externalApache 配置看起来类似于:

DefineExternalAuth pwauth pipe /usr/sbin/pwauth

<Directory /var/www/yourapp>
 AuthType Basic
 AuthName "Your app requires authentication" 
 AuthBasicProvider external
 AuthExternal pwauth
 # any valid username/password is allowed access
 Require valid-user
 ## Only bob and sarah allowed
 # Require user bob sarah
 ## Only the members of the group yourappusers are granted access
 # Require group yourappusers
</Directory>

在较大的环境中,基于本地文件的用户身份验证通常会被中央用户目录(通常是 LDAP 目录)取代。在系统级别,这是一个更改 PAM 配置的问题,之后所有需要身份验证的应用程序都会立即识别 LDAP。

有一架阿帕奇LDAP 模块尽管大多数应用程序通常都支持 LDAP 身份验证,而不是依赖 Apache,但这样做也同样有效。这样还可以使用“注销”按钮等功能,而 Apache 身份验证则不具备此功能。

SSH 密钥特定​​于 SSH 协议,尽管您可能会发现在 Web 应用程序中重建该功能是一项有趣的挑战,但您应该知道,Web 应用程序中常用的 SSH 公钥认证的大致等效项是部署 SSL 客户端证书。

答案2

如果您确实需要 SSH 提供的加密,您可以执行以下操作:

让 Apache 只在运行 SSHd 的服务器上监听 localhost。如果你想保证安全,就不需要做其他事情了。然后,你只需创建一个到服务器的 SSH 隧道,它会重定向到 Apache 正在监听的端口。

可以这样做:(适用于 OS X)ssh -L 8080:127.0.0.1:80 [email protected]

建立连接后,您只需在远程(客户端)机器上的浏览器中转到 localhost:8080 并访问网页即可。

相关内容