Centos或者RedHat创建SFTP上传账号
1.创建sftp用户组
groupadd sftp
2.创建用户并限制用户登录SSH
useradd -g sftp -s /bin/false hnsftp
3.设置用户密码
passwd hnsftp
4.创建用户上传目录,并且修改成用户的home目录,修改目录权限
sftp上传文件夹
mkdir -p /u03/sftp_file
创建hnsftp
用户独立的文件夹
mkdir /u03/sftp_file/hnsftp
修改用户home 目录
usermod -d /u03/sftp_file/hnsftp hnsftp
修改用户home目录权限
chown -R hnsftp:sftp /u03/sftp_file/hnsftp
5.设置 sshd_config
vi /etc/ssh/sshd_config
5.1 找到Subsystem sftp /user/libexec/openssh/sftp-server 前面加#注释掉
#注释掉这行
#Subsystem sftp /usr/libexec/openssh/sftp-server
5.2 添加在配置文件末尾
#添加在配置文件末尾
Subsystem sftp internal-sftp #指定使用sftp服务使用系统自带的internal-sftp
Match user hnsftp #匹配用户,如果要匹配多个组,多个组之间用逗号分割
ForceCommand internal-sftp #指定sftp命令
ChrootDirectory /u03/sftp_file #用chroot将指定用户的根目录,chroot的含义
#下面这两行,如果不希望该用户能使用端口转发的话就加上,否则删掉
X11Forwarding no
AllowTcpForwarding no
6.重启sshd服务
service sshd restart
7.遇到问题
1.Write failed: Broken pipe Couldn't read packet: Connection reset by peer 的错误(sftp连不是上或者马上断掉的问题)
解决:
这个问题的原因是ChrootDirectory的权限问题,你设定的目录必须是root用户所有,否则就会出现问题。所以请确保sftp用户根目录的所有人是root, 权限是 750 或者 755