服务器以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终端