Ssh

sshfs:chroot所有非root使用者到特定目錄

  • November 15, 2018

在伺服器上,我需要對 root 使用者進行不受限制的 ssh 訪問,並對所有其他使用者進行限制。

我想將所有非 root 使用者限制為:

  • 沒有 ssh 登錄
  • 只允許安裝/mnt/data/使用sshfs

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

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

但是如何匹配除 root 之外的所有使用者?

的配置文件中的 Match 指令ssh支持否定。但看起來否定條件sshd_config有點棘手:你必須寫

Match User="!root,*"

將後續指令應用於除 root 之外的所有使用者。

以下是相關文件:來自man sshd_config

Match 引入一個條件塊。

匹配模式可以由單個條目或逗號分隔的列表組成,並且可以使用 ssh_config(5) 的 PATTERNS 部分中描述的萬用字元和否定運算符。

man ssh_config

模式

模式由零個或多個非空白字元、’*’(匹配零個或多個字元的萬用字元)或’?‘組成 (與一個字元完全匹配的萬用字元)。

請注意,否定匹配本身永遠不會產生肯定的結果。

例如,嘗試將“host3”與以下模式列表匹配將失敗:

from="!host1,!host2"

這裡的解決方案是包含一個會產生正匹配的術語,例如萬用字元:

from="!host1,!host2,*"

在 Red Hat Customer Portal 上的這篇文章中找到提示。

引用自:https://unix.stackexchange.com/questions/480765