sshfs:将所有非root用户chroot到特定目录


8

在服务器上,我需要不受限制的root用户ssh访问权限,并且需要所有其他用户的访问权限。

我想将所有非root用户限制为:

  • 没有SSH登录
  • 只允许/mnt/data/使用挂载sshfs

我看到sshd_config允许使用Match User,即:

Match User john
  ChrootDirectory /mnt/data/
  ForceCommand internal-sftp
  AllowTCPForwarding no
  X11Forwarding no

但是我该如何匹配除roo​​t以外的所有用户?


我已经发布了答案,但是“可信和/或官方消息”部分是指您解决方案的一般可行性/安全性还是特定的“如何仅匹配根”问题,这一点对我来说并不十分清楚。
fra-san

@ fra-san-我不确定您的意思。您是否暗示虽然此解决方案在技术上可行,但并不安全?
Martin Vegter

不,我只是想知道您是否正在寻找原始作者或其他权威人士对特定配置的某种认可。实际上,许多已知的知识都建议您正在做什么(Arch Wiki是一个示例)。
fra-san

Answers:


12

ssh的配置文件中的Match指令支持否定。但是看起来条件否定sshd_config有点棘手:您必须编写

Match User="!root,*"

将后续指令应用于除root以外的所有用户。

以下是相关文档:来自man sshd_config

匹配引入条件块。
...
匹配模式可能包含单个条目或逗号分隔的列表,并且可能使用ssh_config(5)的PATTERNS部分中描述的通配符和否定运算符。

来自man ssh_config

模式
模式由零个或多个非空白字符,“ *”(匹配零个或多个字符的通配符)或“?”组成 (与一个字符完全匹配的通配符)。
...
请注意,否定的比赛本身不会产生积极的结果。
例如,尝试将“ host3”与以下模式列表进行匹配将失败:

from="!host1,!host2"

这里的解决方案是包括一个将产生正匹配项的术语,例如通配符:

from="!host1,!host2,*"

在Red Hat Customer Portal上的本文中找到了提示。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.