【CentOS】SFTPにアクセス制限をかけて他のディレクトリを見られないようにする方法

自分だけのサーバを適当にいじくり回していたが、
遂に他の人にも特定のディレクトリをいじくり回してもらうことになった。
もちろん自分の秘密のディレクトリはディレクトリ名すら見られたくないので上階層は移動もできなくしたいし、
ログインしたら他の人は特定のディレクトリ以下だけを見れるようにしたい。


そんなときにやったこと。


前提として、公開鍵の設定は完了しているものとする。
パスワードログイン☓、Rootログインも☓。

1.グループ追加

# groupadd sftp

2.OpenSSHの設定

# vi /etc/ssh/sshd_config

Match group sftp
ChrootDirectory /var/www/html/hoge
ForceCommand internal-sftp


ついでにSubsystem sftpも同ファイルで設定(これは必要ないって書いてあるブログもあるけど多分必要なことが多いかも)
#Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp
# ↑この書き換えはsshd_configのMatch内で上書き設定してる限りにおいて不要

3.設定更新

構文チェック
# sshd -t

SSH設定反映
# service sshd reload

4.ユーザ追加

# useradd -g sftp sftp_user

5.ディレクトパーミッション

/var/www/html
→root:root
root:rootじゃないとだめっぽい

/var/www/html/hoge
→755、sftp_user:root
グループはrootじゃないとだめっぽい

/var/www/html/hoge/AAA
ここまで下層にくると develop:apacheとかでも大丈夫ぽい

ここまでやるとターミナルでssh接続できなくなり、
SFTPでは接続したら
/var/www/html/hoge の中身が
/ で表示されるようになった。



参考
接続できるディレクトリを制限して複数のSFTPユーザを作る - Qiita
chrootされたsftp専用ユーザを作るメモ - Qiita