原文:http://blog.csdn.net/fenglailea/article/details/78631760
1、创建用户组
groupadd sftp
2、创建用户
useradd -G sftp -s /sbin/nologin mysftp
-s 禁止用户ssh登陆
-G 加入sftp 用户组
3、设置用户密码
passwd mysftp
4、修改配置文件
vim /etc/ssh/sshd_config
....
##下面这行注释掉
#Subsystem sftp /usr/libexec/openssh/sftp-server
##后面加入
Subsystem sftp internal-sftp
Match Group sftp
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory %h
ForceCommand internal-sftp
说明
Match Group sftp 匹配sftp用户组中的用户
ChrootDirectory %h 只能访问默认的用户目录(自己的目录),例如 /home/mysftp
5、设置权限
chown root:sftp /home/mysftp
chgrp -R sftp /home/mysftp
chmod -R 755 /home/mysftp
#设置用户可以上传的目录,改目录下允许用户上传删除修改文件及文件夹
mkdir /home/mysftp/upload
chown -R mysftp:sftp /home/mysftp/upload
chmod -R 755 /home/mysftp/upload
这里说明一下
/home/mysftp权限,设置所有人为root,分组为sftp,并且所有人具有rwx权限,sftp分组的有r的权限
/home/mysftp/upload权限,设置所有人为mysftp,分组为sftp,并且所有人具备读写rw权限。
所以sftp连接之后,mysftp的用户,只能看到upload文件夹,并且只能对upload文件夹进行读写,对/home/mysftp只能读不能写
systemctl restart sshd.service
重启ssh报错
打命令再查看下报错
sshd -t
Directive 'UseDNS' is not allowed within a Match block
网上查看一下,结果把ssh的配置文件的内容调换下顺序就好
https://www.cnblogs.com/whatmiss/p/7068772.html
调换后
UseDNS no
AddressFamily inet
PermitRootLogin yes
SyslogFacility AUTHPRIV
PasswordAuthentication yes
# override default of no subsystems
#Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp
Match Group sftp
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory %h
ForceCommand internal-sftp
调换前
# override default of no subsystems
#Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp
Match Group sftp
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory %h
ForceCommand internal-sftp
UseDNS no
AddressFamily inet
PermitRootLogin yes
SyslogFacility AUTHPRIV
PasswordAuthentication yes
其他,检测 /etc/selinux/config中SELINUX 是否为SELINUX=disabled,如果不是请改正