サーバーでは、rootには無制限のsshアクセスが必要で、他のすべてのユーザーには制限されています。
Root以外のすべてのユーザーを以下に制限したいと思います。
sshfs
を使用したマウント/mnt/data/
のみを許可私はsshd_config
がMatch User
の使用を許可していることを確認します。つまり、
Match User john
ChrootDirectory /mnt/data/
ForceCommand internal-sftp
AllowTCPForwarding no
X11Forwarding no
しかし、どうすればroot以外のすべてのユーザーを一致させることができますか?
ssh
の構成ファイルのMatchディレクティブは否定をサポートしています。しかし、sshd_config
の条件を否定することは少しトリッキーであるように見えます:書く必要があります
Match User="!root,*"
rootを除くすべてのユーザーに後続のディレクティブを適用する。
関連ドキュメントは次のとおりです:man sshd_config
から:
一致条件付きブロックを導入します。
...
一致パターンは、単一のエントリまたはカンマ区切りのリストで構成でき、ssh_config(5)のパターンセクションで説明されているワイルドカードと否定演算子を使用できます。
そしてman ssh_config
から:
パターン
パターンは、ゼロ個以上の空白以外の文字、 ‘*’(ゼロ個以上の文字と一致するワイルドカード)、または ‘?’(厳密に1文字と一致するワイルドカード)で構成されます。
...
否定された一致がそれ自体で肯定的な結果を生成することは決してないことに注意してください。
たとえば、「Host3」を次のパターンリストと照合しようとすると失敗します。from="!Host1,!Host2"
ここでの解決策は、ワイルドカードのように、正の一致をもたらす用語を含めることです。
from="!Host1,!Host2,*"
Red Hatカスタマーポータルの この記事 にあるヒント。