需求:
1. sftp 上傳檔案
2. 使用者不能跳出自己的 home 目錄
3. 無法使用 ssh 登入
4. 一般帳號登入或 ssh_key 檔登入皆可

參考資料
1. 設定 sftp 只能存取 home 目錄
    http://blog.miniasp.com/post/2011/08/11/OpenSSH-SFTP-chroot-with-ChrootDirectory.aspx

設定步驟

==== 加新帳號並設定連線 ====

1. 建新帳號
   sudo adduser sftp_user

2. 建立 ssh key

   # 切換帳號
   sudo su sftp_user

   # 建立 ssh key (遇到問題全部按 enter)
   ssh-keygen -t rsa

   # 修改 ssh key 檔名
   cd ~/.ssh
   cp id_rsa.pub authorized_keys

3. 把 id_rsa 內容複製另存成 sftp_user_login.pem

   # 取得內容
   cat id_rsa

   # 在本機開一個 sftp_user_login.pem ,把內容貼上存檔

4. 先試著用 ssh 開啟看看
   chmod 400 sftp_user_login.pem
   ssh -i sftp_user_login.pem  sftp_user@你的domain

5. 用 FileZilla 測試
   
   主機: 你的domain
   協定: SFTP
   登入型式: 金鑰檔案
   使用者: sftp_user
   金鑰檔案: (請選擇剛才的 sftp_user_login.pem)

   設定完畢連線試試...

==== 限制帳號不能離開 home 目錄 ====

1. 新增一個 SFTP 專用的群組
   sudo addgroup --system sftponly


2. 將使用者加入 sftponly 群組
   adduser sftp_user sftponly

3. 修正使用者帳戶的家目錄權限
   chown root.root /home/sftp_user
   chmod 755 /home/sftp_user

4. 建立上傳目錄
   cd /home/sftp_user
   mkdir upload
   chown sftp_user.sftp_user upload

5. 修改 OpenSSH 的設定檔
   先備份
   cp /etc/ssh/sshd_config /etc/ssh/sshd_config-bak

   編輯 "/etc/ssh/sshd_config" 檔案,先找到以下 Subsystem 設定:
   
   Subsystem sftp /usr/lib/openssh/sftp-server internal-sftp
   
   並修改成:
   
   Subsystem sftp internal-sftp
   
   然後在該設定檔最後加上以下設定,其中的 ChrootDirectory 設定的 %u 代表使用者帳號:
   
   Match group sftponly
            ChrootDirectory /home/%u
            X11Forwarding no
            AllowTcpForwarding no
            ForceCommand internal-sftp

6. 重啟 ssh
   service ssh restart

7. 刪除多餘檔案
   rm .bash
   rm -rf .cache/
   rm -rf .cloud-locale-test.skip
   rm .profile

8. 修改 .ssh 權限避免被誤刪
   sudo chown root:sftp_user .ssh
   sudo chmod 750 .ssh

 

arrow
arrow
    全站熱搜

    wbkuo 發表在 痞客邦 留言(0) 人氣()