限制使用者登入 SFTP 根目錄 (ChrootDirectory)

Linux 是個多人多工的系統,有時候我們希望可以讓其他一般的使用者可以利用 SFTP 來存取檔案,但是又希望他們可以存取且看到需要關注的資料夾就好!

這時,我們可以編輯 sshd_config (/etc/ssh/sshd_config) 檔案 :

sudo vim /etc/ssh/sshd_config

1) 我們假設有個使用者叫做 Jed, 並希望他存取 /var/www/html 目錄,可以在 sshd_config 內容後加入以下幾項設定

單一使用者:

Match user Jed
        ChrootDirectory /var/www/html
        AllowTcpForwarding no
        X11Forwarding no
        ForceCommand internal-sftp

2) 修改完後,存檔離開,並下以下指令讓剛剛更改的設定值能生效

sudo service ssh restart

 

    這樣的設定可以達成需求 (單一使用者):

  1. SFTP 登入後需透過 chroot 限制存取目錄
  2. 不允取使用者建立 SSH Tunnel
  3. 不允取使用者建立 X11 Forwarding
  4. 不允許使用者登入 Shell (只能使用 SFTP 存取)