共计 1565 个字符,预计需要花费 4 分钟才能阅读完成。
我租了一个 3A 服务器,我把我的办法教给你们,有问题能够后盾私信我
SFTP 是基于默认的 22 端口,是 ssh 内含的协定,只有启动了 sshd 就能够应用。sftp 采纳的是 ssh 加密隧道,装置性方面较 ftp 强,而且依赖的是零碎自带的 ssh 服务
本次应用 liunx 自带的 internal-sftp
1、创立用户并设置明码
useradd -s /bin/false sftpuser
passwd 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 #重启 sshd
systemctl 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 文件优先级要高!)