需求:
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
留言列表