搭建FTP
安装vsftpd服务
yum install -y vsftpd
编辑配置文件
vim /etc/vsftpd/vsftpd.conf
#配置文件如下
#是否允许匿名用户
anonymous_enable=NO
#是否允许本地ftp登陆
local_enable=YES
#是否允许ftp用户登陆后执行写操作
write_enable=YES
#文件被创建时的权限
local_umask=022
#是否显示路径信息
dirmessage_enable=YES
#
xferlog_enable=YES
#
connect_from_port_20=YES
#
xferlog_std_format=YES
#设置vsftpd服务器是否以standalone模式运行,该值必须设置为yes
listen=YES
pam_service_name=vsftpd
#/etc/vsftpd/user_list文件是否启用生效
userlist_enable=YES
#/etc/vsftpd/user_list文件中的用户是否允许访问还是不允许访问,设置为yes,则该文件里面的用户不可访问,设置为no,则只有该文件里面的用户可以访问
userlist_deny=NO
#是否与tcp_wrapper结合来判断用户的登陆许可,会去检查/etc/hosts.allow和/etc/hosts.deny
tcp_wrappers=YES
#端口
listen_port=2121
#开启被动模式
pasv_enable=YES
#被动模式最小端口
pasv_min_port=30000
#动模式最大端口
pasv_max_port=31000
修改/etc/vsftpd/user_list
由于上一步conf文件的设置(userlist_deny=NO),只有出现在这个文件里面的用户才能使用ftp登陆
新建一个dsj_ftp用户,并写入这个文件
关闭selinux
(否则会报500 OOPS: cannot change directory错误)
sed -i 's/enforcing/disabled/g' /etc/sysconfig/selinux
setenforce 0
设置之后用getenforce看一下,有时候设置之后,getenforce仍然是Enforcing,需要看到状态是Permissive才行
配置防火墙
#防火墙开启连接端口(我这里是2121),以及被动连接的范围端口(30000-31000)
iptables -I INPUT -p tcp --dport 2121 -j ACCEPT
iptables -I INPUT -p tcp --dport 30000:31000 -j ACCEPT
#保存防火墙,重启防火墙,重启vsftpd
service iptables save
service iptables restart
service vsftpd restart
客户端FZ连接测试通过!
报错一
553报错
1.检查selinux,确认已经关闭
2.确认配置文件中write_enable=YES
3.确认该路径下可写
(执行了一个cp成功,证明可写)
4.确认用户的属组和属主拥有ftp相关权限
这里因为新挂了一个磁盘到/home目录下,因此将原有的目录干掉了,新建之后路径属组和属主为root,而在配置文件里面root是被我禁止了的,所以导致553报错!
修改路径属组/主之后,上传文件成功
报错二
通过FZ上传一个比较大的tar包(innobackup的RDS全库备份)到服务器上,解压失败
后来发现是传输类型的原因
将原来的传输类型二进制换成ASCⅡ码后解决该问题
搭建SFTP
SFTP基于sshd服务
1.创建用户组(sftp)
groupadd sftp
2.创建用户(test)
#需要设置该用户不可登录,同时修改该用户的默认/home目录
useradd test -d /data/sftp/test -s /sbin/nologin -G sftp
#修改用户密码
passwd test
3.修改路径权限
#到sftp这个层级归属root,sftp下面的各账户的私有路径则归属各私有账户
chown root.root /data/sftp
chown -R test /data/sftp/test
chmod -R 700 /data/sftp/test
4.修改/etc/ssh/sshd_config
#在末尾段加入
Subsystem sftp internal-sftp
#匹配sftp组
Match Group sftp
#root指定到sftp这一层
ChrootDirectory /data/sftp
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
5.重启sshd服务即可,sftp走的是sshd的端口
报错一
“Directive 'UseDNS' is not allowed within a Match block”
上面的第4点需要加到sshd_config的文末,切勿加到下面这一段的前面,否则会出现DNS的报错
UseDNS no
AddressFamily inet
PermitRootLogin yes
SyslogFacility AUTHPRIVPassword
Authentication yes
报错二
登录sftp之后无法上传下载
需要检查第3步设置的路径权限问题(chown -R test /data/sftp/test )
报错三
设置了路径权限之后无法登陆
sshd_config中的 “ChrootDirectory /data/sftp” 设置到了私人路径层级(/data/sftp/test)有可能导致登录失败
非默认端口的连接
#-oPort
sftp -oPort=60001 [email protected]