我的/etc/ssh/sshd_config
结尾是这样的:
Include sshd_config.d/sftp_users.conf
但是,该文件的内容并未包含在内。通过绝对路径或 glob 包含不会改变任何内容。
为了使自己确信它确实没有被读取,我跟踪了 sshd(输出如下)。绝对没有被读取。然而,据说Include
自7.3p1显然坚定的于 2020 年 2 月 1 日(2020 年 3 月 31 日之前)。
虽然我可以将包含的文件放在主目录中sshd_config
,但将定制文件放入其中会很方便sshd_config.d/*conf
。
有什么建议可以解释为什么这不起作用吗?
这是一个 ubuntu 20.04 图像,仅供参考。
更新
使用-ddd
sshd 选项,
/usr/sbin/sshd -ddd
我发现包含相对路径名(在我看来是可以工作的)不起作用。更改为绝对路径名会报告配置现在正在被读取:
debug2: /etc/ssh/sshd_config line 9: new include /etc/ssh/sshd_config.d/sftp_users.conf
debug2: /etc/ssh/sshd_config line 9: including /etc/ssh/sshd_config.d/sftp_users.conf
debug2: load_server_config: filename /etc/ssh/sshd_config.d/sftp_users.conf
debug2: load_server_config: done config len = 182
debug2: parse_server_config_depth: config /etc/ssh/sshd_config.d/sftp_users.conf len 182
debug3: checking syntax for 'Match Group sftp_users'
但是模式永远不会匹配,而如果Match
块本身存在,它就会匹配sshd_config
。
答案1
似乎有些不对劲。我的全新安装的 20.04.2 LTS 服务器有一个 /etc/ssh/sshd_config
Include /etc/ssh/sshd_config.d/*.conf
这成功包含了 .conf 文件。我使用过的每个 LTS 服务器版本都是如此。我无法评论其他图像。
答案2
正如本文所提到的问题需要注意将 Include 指令放在配置文件中的位置。总之,最安全的做法是将其放在文件顶部,否则最好在指令前面加上指令,Include
这样Match all
它就不会被无意中作为Host
指令的一部分包含进去。
答案3
这似乎是 ubuntu 20.04 上某些版本的 openssh 中的一个错误。
我已在错误报告中写下了我的调查这里。