我们正在使用 OpenSSH_5.3p1 运行 CentOS 6.9,并为具有相同主目录(安装到 htdocs)的外部用户创建 chroot 帐户。问题是该文件.ssh/authorized_keys2
由第一个用户拥有(并且这已经有效)。我怎样才能让它为其他用户工作?
我尝试AuthorizedKeysFile
在 sshd_config 中添加多个文件路径,但出现错误garbage at end of line
。
我尝试在第二个用户的匹配块中添加AuthorizedKeysFile
in sshd_config
,但出现错误'AuthorizedKeysFile' is not allowed within a Match block
。
我无法更改主目录,因为否则路径与实际的开发路径不同。
有什么建议如何解决吗?我是否必须将 OpenSSH 升级到支持多个条目的新版本AuthorizedKeysFile
(我想我必须使用 rpm 构建它)?之后的安全更新怎么样?
答案1
一种选择是使用令牌为每个用户提供唯一的authorized_keys
文件。
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/
,或者设置StrictModes
为no
。如果您设置StrictModes
为no
确保其他用户无法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 身份触摸该文件,因此它是空的。