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

hel*_*ode 4 chroot ssh openssh key-authentication

我们使用 OpenSSH_5.3p1 运行 CentOS 6.9,并为具有相同主目录(挂载到 htdocs)的外部用户创建了 chroot 帐户。问题是文件.ssh/authorized_keys2归第一个用户所有(这已经有效)。我怎样才能让它为另一个用户工作?

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

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

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

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

Cen*_*ane 13

一种选择是使用令牌给每个用户一个独特的 authorized_keys文件。

来自man 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
Run Code Online (Sandbox Code Playgroud)

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

关于权限的说明

人 sshd

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

所以你可能需要把你的钥匙放在外面.ssh/,否则设置StrictModesno. 如果您设置StrictModesno确保其他用户无法authorized_keys为其他人创建密钥,或删除其他用户的授权密钥。可能最好执行以下操作:

AuthorizedKeysFile    .ssh_%u/authorized_keys
Run Code Online (Sandbox Code Playgroud)

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


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

AuthorizedKeysFile    .ssh/authorized_keys    .ssh_%u/authorized_keys
Run Code Online (Sandbox Code Playgroud)

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