我租了一个3A的服务器,教大家我的方法,有问题可以后台私信我SFTP是基于默认端口22的,这是自带的协议在ssh中,只要启动了sshd就可以使用了。sftp使用ssh加密隧道,比ftp安装方便,依赖于系统自带的ssh服务。这次使用liunx自带的internal-sftp1,创建用户并设置密码useradd-s/bin/falsesftpuserpasswdsftpuser2,修改/etc/ssh/sshd_config配置文件,将下面一行注释掉Subsystemsftp/usr/libexec/openssh/sftp-server同时添加如下内容:Subsystemsftpinternal-sftp#指定使用sftp服务使用系统自带的internal-sftpMatchusersftpuser#匹配用户,如果你想匹配多个组,多个组用逗号隔开ChrootDirectory/data/sftp#设置属于用户组sftp的用户访问的根文件夹例如设置/data/sftp为sftpusersftp根目录ForceCommandinternal-sftp#指定sftp命令,强制执行内部sftp,并忽略~/.ssh/rc文件中的任何命令X11Forwardingno#这两行,如果不想让用户使用端口转发就加上,否则删除AllowTcpForwardingno3,关闭selinux,修改/etc/sysconfig/selinux配置文件,将文件中的SELINUX=enforcing改为SELINUX=disabled,然后执行以下命令setenforce0(//0为关闭,1为开启)4.重启sshdfuwusystemctlrestartsshdorsystemctlrestartsshd.service#Restartsshdsystemctlstatussshd.service5.赋予权限修改sftp-users用户组的用户目录权限。因为使用ChrootDirectory/data/sftp作为sftpuser的sftp根目录,现在我们来修改ChrootDirectory设置的权限目录权限及其所有上层文件夹权限,所有者和所属组必须是root;ChrootDirectory及其设置的目录权限所有上级文件夹权限,只有属主才能有写权限,也就是说权限最大只能设置为755。由于/data/sftpuser是root创建的,所以权限为755。如果sftpuser直接sftpin以前是没有写权限的,所以,需要在/data/sftp下新建一个目录,给qhlh创建文件夹的权限:mkdir/data/sftp/wly给chownsftpuser:sftpuser/data/的权限sftp/wly把目录给用户chmod755/data/sftp/wly#权限只能是755,否则不能限制目录6.测试验证使用sftpsftpuser@192.168.31.49或者使用filezilla客户端连接sftpserver使用filezilla客户端连接sftp服务器上传一个文件验证:7.异常问题:原来sftp运行一段时间后,突然报如下错误,服务器无法连接sftp工具,报错:未能初始化sftp协议。主机是sftp服务器吗?主要原因是密码老化,密码老化,有效期已过,导致会话失败!sftp默认密码有效期为30天。解决方法如下:1.直接修改用户密码有效期,命令:chage-M99999username--sftpusername2.修改/etc/shadow文件:3.修改/etc/login.defs文件:(注意:login.defs文件的参数只对普通用户的创建有效,对root用户无效。shadow文件的优先级高于login.defs文件!)
