服務器以centOS爲例.shell
首先爲何要搭建sftp? 答案: 容許某些用戶上傳及下載文件,可是這些用戶只能使用sftp傳送文件,不能使用SSH終端訪問服務器,並且sftp不能訪問系統文件服務器
ssh -V 查看open ssh的版本 若是沒有請在服務器上安裝openSSH sudo yum install openssh-server
建立sftp組ssh
groupadd sftp-users
添加一個用戶測試
sudo adduser chcuser //刪除一個用戶 測試 sudo userdel chcuser
//關閉shell訪問 useradd -g sftp-users -s /bin/false chcuser
建立ssh用戶組,把管理員加到該組vagrant
sudo usermod -a -G ssh-users vagrant
準備sftp的根目錄及共享目錄。這裏解釋一下,sftp的根目錄必須知足如下要求:全部者爲root,其餘任何用戶都不能擁有寫入權限。所以,爲了讓SFTP
用戶可以上傳文件,還必須在「監獄」根目錄下再建立一個普通用戶可以寫入的共享文件目錄。爲了便於管理員經過SFTP管理上傳的文件,我把這個共享文件目錄配置爲:由root全部,容許sftp-users讀寫。這樣,管理員和SFTP用戶組成員就都能讀寫這個目錄了。(注意,下面提到的Chroot對權限要求很是嚴格,此處的 /home/sftp_root權限必須爲755)code
sudo mkdir /home/sftp_root sudo mkdir /home/sftp_root/shared sudo chown root:sftp-users /home/sftp_root/shared sudo chmod 770 /home/sftp_root/shared
修改SSH配置文件。server
sudo VIM /etc/ssh/sshd_config
在sshd_config文件的最後,添加如下內容:ftp
Match Group sftp-users ChrootDirectory /home/sftp_root AllowTcpForwarding no X11Forwarding no ForceCommand internal-sftp
這些內容的意思是: 針對sftp-users用戶,額外增長一些設置:將/home/sftp_root
設置爲該組用戶的系統根目錄(所以它們將不能訪問該目錄以外的其餘系統文件);禁止TCP Forwarding
和X11 Forwarding
強制該組用戶僅僅使用SFTP。配置
若是須要進一步瞭解細節,可使用man sshd_config
命令。這樣設置以後,SSH用戶組能夠訪問SSH,而且不受其餘限制;而SFTP用戶組僅能使用SFTP進行。 END終端