Centos7部署sftp
1、创建sftp用户组
groupadd sftp
2、创建一个用户sftpuser
useradd -g sftp -s /bin/false sftpuser
3、设置sftpuser用户的密码,两次密码确认,会验证密码是否过于简单
passwd sftpuser
4、创建一个sftp的上传目录
mkdir -p /datas/www
5、修改用户sftpuser所在的目录
usermod -d /datas/www sftpuser
6、配置sshd_config
vi /etc/ssh/sshd_config
找到如下这行,并注释掉
Subsystem sftp /usr/libexec/openssh/sftp-server
添加如下几行
Subsystem sftp internal-sftp #这行指定使用sftp服务使用系统自带的internal-sftp
Match User sftpuser #这行用来匹配用户
ChrootDirectory /datas/www #用chroot将用户的根目录指定到/datas/www ,这样用户就只能在/datas/www下活动
AllowTcpForwarding no
ForceCommand internal-sftp #指定sftp命令
为什么用 internal-sftp 而不用默认的 sftp-server,这是因为:
这是一个进程内的 sftp 服务,当用户 ChrootDirectory 的时候,将不请求任何文件;
更好的性能,不用为 sftp 再开一个进程。
保存退出
设定Chroot目录权限
chown -R root:root /datas/www
chmod 755 /datas/www
建立SFTP用户登入后可写入的目录
mkdir /datas/www/sftpuser
chown -R sftpuser:sftp /datas/www/sftpuser/
chmod 755 /datas/www/sftpuser/
重启sshd服务
service sshd restart
测试是否能正常登陆
sftp -P 22 sftpuser@127.0.0.1
如果出现无法连接则关闭SElinux
vi /etc/sysconfig/selinux
#找到如下这行
SELINUX=enforcing
#修改为
SELINUX=disabled
保存退出