我正在尝试以非 root 用户身份运行 SSH 守护进程,因为我想在我没有 root 访问权限的服务器上提供对 Git 存储库的 SSH 访问。我已经使用自定义配置和本地证书运行它,但登录当前无法正常工作。
我正在使用以下版本sshd:
OpenSSH_7.4p1、OpenSSL 1.0.2k-fips 2017 年 1 月 26 日
在此阶段,我不会寻求配置等方面的帮助(如果需要,我将发布单独的问题)。我只是想知道是否存在硬编码限制,这意味着在我投入更多时间之前这是不可能的。
SSH 守护程序中是否存在任何硬性限制,导致其无法作为非 root 用户成功使用?
以下是我根据大量研究得出的发现:
UsePrivilegeSeparation选项已被删除,并且该功能现在始终启用。这意味着 SSH 守护进程需要能够以不同的用户身份运行子进程,这需要 root 用户。AuthorizedKeyCommands如果使用该选项,则需要 root。
StrictModes标志听起来像是会禁用这些模式检查,但事实并非如此。)getpwname()系统调用来检查的,该系统调用是硬编码的/etc/shadow,只能由 root 读取。因此,在以下情况下可以以 root 身份运行它:
UsePrivilegeSeparation我没有根据我的用例需要进行进一步调查AuthorizedKeyCommands,所以我已经走进了死胡同。即使满足上述条件,您也可能会遇到对非 root 用户的进一步限制,但我发现一些证据表明,在某些情况下,人们能够以非 root 身份运行它。
为了完整起见,上述规则有一些边缘情况。我还没有测试过这些;它们基于我在调查上述内容时遇到的代码的推论:
/etc/passwd可以/etc/shadow使用基于密码的身份验证,因为该文件是世界可读的,并且 OpenSSH 代码中似乎没有对此进行任何显式模式检查。然而,以这种方式配置系统确实非常危险,所以永远不要这样做!AuthorizedKeyCommands指向 root 拥有但可由您的用户帐户执行的脚本,则可以使用这种形式的身份验证。但是,该脚本仍然需要禁用组/其他人的写入访问权限,因此您将无法创建或编辑文件(除非以 root 身份),如果您根本没有 root 访问权限,这将无法成为解决方案。| 归档时间: |
|
| 查看次数: |
2168 次 |
| 最近记录: |