CentOS下快速搭建FTP/SFTP

搭建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]

你可能感兴趣的:(CentOS下快速搭建FTP/SFTP)