我租了一个3A服务器,我把我的办法教给你们,有问题能够后盾私信我
SFTP是基于默认的22端口,是ssh内含的协定,只有启动了sshd就能够应用。sftp采纳的是ssh加密隧道,装置性方面较ftp强,而且依赖的是零碎自带的ssh服务
本次应用liunx自带的internal-sftp
1、创立用户并设置明码
useradd -s /bin/false sftpuserpasswd sftpuser
2、批改/etc/ssh/sshd_config配置文件
正文掉上面这行
Subsystem sftp /usr/libexec/openssh/sftp-server
同时增加以下内容:
Subsystem sftp internal-sftp #指定应用sftp服务应用零碎自带的internal-sftp Match user sftpuser #匹配用户,如果要匹配多个组,多个组之间用逗号宰割ChrootDirectory /data/sftp #设定属于用户组sftp的用户拜访的根文件夹如设置 /data/sftp 作为sftpuser 的sftp根目录ForceCommand internal-sftp #指定sftp命令,强制执行外部sftp,并疏忽任何 ~/.ssh/rc文件中的命令X11Forwarding no #这两行,如果不心愿该用户能应用端口转发的话就加 上,否则删掉AllowTcpForwarding no
3、敞开selinux
批改/etc/sysconfig/selinux配置文件
将文件中的SELINUX=enforcing 批改为 SELINUX=disabled
而后执行以下命令setenforce 0 (// 0是敞开,1是开启 )
4、重启sshdfuwu
systemctl restart sshd 或systemctl restart sshd.service #重启sshdsystemctl status sshd.service
5、权限赋予
批改sftp-users用户组用户目录权限
因为应用了ChrootDirectory /data/sftp 作为sftpuser的sftp根目录,当初来批改权限
ChrootDirectory设置的目录权限及其所有的下级文件夹权限,属主和属组必须是root;
ChrootDirectory设置的目录权限及其所有的下级文件夹权限,只有属主能领有写权限,也就是说权限最大设置只能是755
因为/data/sftpuser 是root创立的,权限755,如果sftpuser间接sftp过来是没有权限写入,因而,须要/data/sftp下创立新目录并给与qhlh权限
创立文件夹:mkdir /data/sftp/wly
权限赋予
chown sftpuser:sftpuser /data/sftp/wly 将目录给用户chmod 755 /data/sftp/wly #权限也只能是755,否则无奈限度目录
6、测试验证
应用Sftp sftpuser@192.168.31.49或应用filezilla客户端连贯到sftp服务器
应用filezilla客户端连贯到sftp服务器上传一份文件验证:
7、异样问题:
当本来sftp运行一段时间后忽然不行报如下谬误
并且服务器也连贯不上sftp
工具报错:无奈初始化sftp协定,主机是sftp服务器吗?
很大起因是password aged、明码老化、有效期曾经生效导致会话失败!
sftp默认明码有效期是30天
解决方案如下:
1、间接用命令批改用户明码有效期:chage -M 99999 username--sftp用户名
2、批改/etc/shadow文件:
3、批改/etc/login.defs文件:
(注:login.defs文件参数只对创立普通用户失效,对root用户有效。shadow文件比login.defs文件优先级要高!)