是否可以明确设置该AuthorizedKeysFile
设置以使其涵盖以下情况:
- 标准用户下
/home/%u/.ssh/authorized_keys
- 系统用户下
/var/lib/%u/.ssh/authorized_keys
- 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 上工作)