Linux搭建SFTP
一、 创建sftp用户组
(注:通常选择home路径下,按需自行调整)
1、 创建sftp用户组根目录(详情看第4点)
mkdir /home/sftpUsers/name
创建单个用户name:
adduser name //新建name用户
passwd name //给name用户设置密码—部分需要设置复杂密码包含数字,且长度不小于8位 name123456
2、 创建用户组
groupadd sftpUsers
3、 修改用户组所在根目录的访问权限为755
chmod 755 /home/sftpUsers/name
4、 将用户组及目录所属授权给root用户下sftp用户组
chown root:sftpUsers /home/sftpUsers/name
二、 创建sftp用户
1、 创建sftp用户(指定用户所在组 根目录 用户名)
useradd -g sftpUsers -d /home/sftpUsers/name/name01(目录) name01(用户名)
2、 将用户目录所属授权给root用户下sftp用户组
chown root:sftpUsers /home/sftpUsers/name/name01
3、 修改用户所在根目录的访问权限为755
chmod 755 /home/sftpUsers/name/name01
4、 创建用户根目录下文件交易目录upload
mkdir /home/sftpUsers/name/name01/upload
5、 修改upload的访问权限为777
chmod 777 /home/sftpUsers/name/name01/upload
6、 修改用户密码
passwd name01
三、 修改配置文件sshd_config
1、 编辑配置文件
vi /etc/ssh/sshd_config
2、 、指定使用sftp服务使用系统自带的internal-sftp
输入大写I进入插入模式,注释后新增 Subsystem sftp internal-sftp 完成后EXC退出并:wq保存
3、 匹配用户组进行相关配置
(没必要逐个用户匹配,直接对用户组设置,对组内成员均起作用)
Match Group sftpUsers 匹配用户组
X11Forwarding no 不允许X11转发
AllowTcpForwarding no 禁止如SSH等TCP连接
ChrootDirectory /home/sftpUsers/name/%u 设定组员根目录
ForceCommand internal-sftp 强制执行内部sftp
第一个模块匹配用户组,第二个模块匹配单个用户
Match User name
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory /home/sftpUsers
ForceCommand internal-sftp
4、 "ESC”返回命令模式,输入命令完成保存和退出
:wq
5、 重启sftp服务使新配置生效
service sshd restart 或者 systemctl restart sshd.service
如果报错需要输入systemctl status sshd.service 来查看
然后semanage port -l | grep ssh看一下端口,然后vi /etc/ssh/sshd_config看一下端口,如果都正常检查上面配置是否有命令输入错误
可参考网址:https://blog.csdn.net/weixin_42140261/article/details/105076035
四、 测试
使用之前建立的用户进行sftp登录与ssh登录验证协议访问
再使用该用户进行文件上传下载验证权限
删除用户组:groupdel nginx
查看所有用户组:tail /etc/group
删除用户:userdel -r nginx
添加用户:useradd user
删除用户配置:/var/spool/mail/
命令连接: sftp -oPort=60001 [email protected]
查看用户组是否存在:getent group | grep mygroup
给已有的用户增加工作组:
usermod -G groupname username (这个会把用户从其他组中去掉)
usermod -a groupname username