具有相同主目录的多个 chroot 用户的授权密钥

具有相同主目录的多个 chroot 用户的授权密钥

我们正在使用 OpenSSH_5.3p1 运行 CentOS 6.9,并为具有相同主目录(安装到 htdocs)的外部用户创建 chroot 帐户。问题是该文件.ssh/authorized_keys2由第一个用户拥有(并且这已经有效)。我怎样才能让它为其他用户工作?

我尝试AuthorizedKeysFile在 sshd_config 中添加多个文件路径,但出现错误garbage at end of line

我尝试在第二个用户的匹配块中添加AuthorizedKeysFilein sshd_config,但出现错误'AuthorizedKeysFile' is not allowed within a Match block

我无法更改主目录,因为否则路径与实际的开发路径不同。

有什么建议如何解决吗?我是否必须将 OpenSSH 升级到支持多个条目的新版本AuthorizedKeysFile(我想我必须使用 rpm 构建它)?之后的安全更新怎么样?

答案1

一种选择是使用令牌为每个用户提供唯一的authorized_keys文件。

人 sshd_config

AuthorizedKeysFile

指定包含可用于用户身份验证的公钥的文件。该格式在 的 AUTHORIZED_KEYS FILE FORMAT 部分中进行了描述sshd(8)AuthorizedKeysFile%T可能包含在连接设置期间被替换的 形式的令牌。定义了以下标记:%%被替换为文字%%h被替换为正在验证的用户的主目录,以及%u替换为该用户的用户名。扩展后,AuthorizedKeysFile被视为绝对路径或相对于用户主目录的路径。可以列出多个文件,并用空格分隔。或者,可以将此选项设置为none跳过检查文件中的用户密钥。默认为.ssh/authorized_keys .ssh/authorized_keys2.

强调我的。

所以你可以设置:

AuthorizedKeysFile    .ssh/%u_authorized_keys

然后为用户foo创建一个authorized_keys文件.ssh/foo_authorized_keys

关于权限的注释

人 sshd

~/.ssh/authorized_keys
...
如果其他用户可写入该文件、~/.ssh目录或用户的主目录,则该文件可能会被未经授权的用户修改或替换。在这种情况下,sshd 将不允许使用它,除非该StrictModes 选项已设置为 no

因此,您可能需要将钥匙放在外面.ssh/,或者设置StrictModesno。如果您设置StrictModesno确保其他用户无法authorized_keys为其他人创建密钥,或删除其他用户的授权密钥。可能最好做类似的事情:

AuthorizedKeysFile    .ssh_%u/authorized_keys

.ssh_foo/为用户创建一个foo只能foo读/写的目录。


您可以选择是否也允许.ssh/authorized_keys使用

AuthorizedKeysFile    .ssh/authorized_keys    .ssh_%u/authorized_keys

这将允许“正常”形式authorized_keys仍然有效,并且authorized_keys文件必须由您的用户拥有并具有正确的权限,否则它将被忽略。仍然考虑到不应该authorized_keys为另一个用户创建文件,这可能意味着以 root 身份触摸该文件,因此它是空的。

相关内容