sftp服务部署
1)groupadd eduboss #添加用户组
2)useradd -g eduboss -s /sbin/nologin eduboss #创建用户
3)passwd eduboss #修改密码
4)vim /etc/ssh/sshd_config #修改配置文件
#Subsystem sftp /usr/libexec/openssh/sftp-server #注释掉
#下面的是新增的内容
Subsystem sftp internal-sftp
Match Group eduboss #指定以下的子行配置是匹配eduboss用户组的,多个逗号隔开
ChrootDirectory /home/%u #指定Match Group行指定的用户组验证后用于chroot环境的路径
ForceCommand internal-sftp #该行强制执行内部sftp
AllowTcpForwarding no #
X11Forwarding no
5)chown root.eduboss /home/eduboss
6)chmod 755 /home/eduboss
7)mkdir /home/eduboss/upload
8)chown eduboss:eduboss /home/eduboss/upload
9)chmod 755 /home/eduboss/upload
10)关闭selinux服务
setenforce 0
11)重新启动ssh服务
systemctl restart sshd.service
12)使用sftp登录服务器上传文件:
sftp eduboss@ip
输入密码
13)可以使用的命令:put上传,get下载,mkdir 创建目录 , rm 删除文件,rmdir 删除目录
报错信息:
> Write failed: Broken pipe > Couldn't read packet: Connection reset by peer
这个问题的原因是ChrootDirectory的权限问题,你设定的目录必须是root用户所有,否则就会出现问题。所以请确保sftp用户根目录的所有人是root, 权限是 750 或者 755。注意以下两点原则:
目录开始一直往上到系统根目录为止的目录拥有者都只能是 root,用户组可以不是 root。
目录开始一直往上到系统根目录为止都不可以具有群组写入权限
上面2点一定注意,仔细检查。我就是因为这个问题,导致一直有这个问题。仔细检查配置后,解决问题。