如何在 sshd 中提供允许普通用户、系统用户和 root 用户的authorized_keys 路径?

如何在 sshd 中提供允许普通用户、系统用户和 root 用户的authorized_keys 路径?

是否可以明确设置该AuthorizedKeysFile设置以使其涵盖以下情况:

  1. 标准用户下/home/%u/.ssh/authorized_keys
  2. 系统用户下/var/lib/%u/.ssh/authorized_keys
  3. root用户下/root/.ssh/authorized_keys

我的问题是,是否有一个变量包含中指定的用户目录名称服务开关

答案1

您已表示您接受使用用户的主目录作为基础.ssh/- 无论用户是真实用户、系统用户还是 root。

我从你的问题中推断出这一点:

我尝试通过更改来解决这个/etc/ssh/sshd_config问题

AuthorizedKeysFile ~/.ssh/authorized_keys 

这失败了,因为sshd正在检查/root/.ssh/authorized_keys.

如果你快速浏览一下的手册sshd_config你会看到这个:

授权密钥文件

指定包含可用于用户身份验证的公钥的文件。 AuthorizedKeysFile 可能包含 %T 形式的令牌,这些令牌在连接设置期间被替换。定义了以下标记:%% 被替换为文字“%”,%h 替换为正在验证的用户的主目录,并且 %u 被该用户的用户名替换。扩展后,AuthorizedKeysFile 将被视为绝对路径或相对于用户主目录的路径。默认值为“.ssh/authorized_keys”。


在我的默认设置中,我注释掉了一行:

# AuthorizedKeysFile %h/.ssh/authorized_keys

这意味着(至少对于 OpenSSH 的 Ubuntu 和 Debian 发行版)您实际上要求的是默认配置!这可能是投反对票的一个很好的理由。

答案2

根据@Tomasz,您可以使用匹配用户

# no match rule
AuthorizedKeysFile /home/%u/.ssh/authorized_keys

match User foo
    AuthorizedKeysFile /special/authorized_keys.%u

match Group git
    /var/lib/%u/.ssh/authorized_keys

首先使用更通用的用户。

见人ssh_config还是见人sshd_config

(顺便说一句,我无法使用 chroot 使其在 sles12 上工作)

相关内容