FTP简介

FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:”下载”(Download)和”上传”(Upload)。”下载”文件就是从远程主机拷贝文件至自己的计算机上;”上传”文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。

搭建FTP服务器

检查vsftpd软件是否安装

[fanmaolin@Centeros ~]$ rpm -qa | grep vsftpd

如果没有安装进行下面的安装操作

安装vsftpd软件

[fanmaolin@Centeros ~]$ sudo yum install -y vsftpd
Loaded plugins: fastestmirror, refresh-packagekit, security
Setting up Install Process
Loading mirror speeds from cached hostfile
 * base: centos.ustc.edu.cn
 * extras: centos.ustc.edu.cn
 * updates: centos.ustc.edu.cn
Resolving Dependencies
--> Running transaction check
---> Package vsftpd.x86_64 0:2.2.2-24.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

====================================================================================================================================
 Package                       Arch                          Version                              Repository                   Size
====================================================================================================================================
Installing:
 vsftpd                        x86_64                        2.2.2-24.el6                         base                        156 k

Transaction Summary
====================================================================================================================================
Install       1 Package(s)

Total download size: 156 k
Installed size: 340 k
Downloading Packages:
vsftpd-2.2.2-24.el6.x86_64.rpm                                                                               | 156 kB     00:00     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : vsftpd-2.2.2-24.el6.x86_64                                                                                       1/1 
  Verifying  : vsftpd-2.2.2-24.el6.x86_64                                                                                       1/1 

Installed:
  vsftpd.x86_64 0:2.2.2-24.el6                                                                                                      

Complete!

vsftpd的一般操作

使用vsftpd软件,主要包括如下几个命令:

启动ftp:service vsftpd start 

            停止ftp:service vsftpd stop 

            重启ftp:service vsftpd restart

配置vsftpd

ftp的配置文件主要有三个:

ftpusers 该文件用来指定那些用户不能访问ftp服务器。
user_list 该文件用来指示的默认账户在默认情况下也不能访问ftp
vsftpd.conf vsftpd的主配置文件

[fanmaolin@Centeros ~]$ ls /etc/vsftpd/
ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh
查看配置

“#”表示注释

[fanmaolin@Centeros ~]$ sudo grep -v "#" /etc/vsftpd/vsftpd.conf
anonymous_enable=YES#是否允许匿名登录ftp,YES表示允许。
local_enable=YES#是否允许本地用户登录,本地用户即/etc/passwd内帐号,YES表示允许。
write_enable=YES#是否开放写权限
local_umask=022#设置本地用户的文件的掩码是022。
dirmessage_enable=YES#当使用者进入某个目录时,会显示该目录需要注意的内容,显示的档案预设是.message ,需要手工在该目录下创建,当然,可以使用message_file设定项目来修订!
xferlog_enable=YES#激活上传下载日志,由xferlog_file决定日志文件名。
connect_from_port_20=YES#启用FTP数据端口的连接请求(ftp-data)。
xferlog_std_format=YES#是否使用标准的ftp xferlog模式。
listen=YES#开启ipv4监听

pam_service_name=vsftpd#使用pam模块控制,vsftpd文件在/etc/pam.d目录下。
userlist_enable=YES#此选项被激活后,vsftpd将读取userlist_file参数所指定的文件中的用户列表。当列表中的用户登录FTP服务器时,该用户在提示输入密码之前就被禁止了。即该用户名输入后,vsftpd就直接禁止掉该用户,不会再进行询问密码等后续步骤。
tcp_wrappers=YES#是否允许tcp_wrappers管理。
进入vsftpd.conf进行配置修改
[fanmaolin@Centeros ~]$ sudo vim /etc/vsftpd/vsftpd.conf

anonymous_enable=yes                           //允许匿名用户登录  
local_enable=yes                                      //允许本地用户登录  
write_enable=yes  
local_umask=022  
anon_upload_enables=yes  #取消注释符“#”
anon_mkdir_write_enable=yes  #取消注释符“#”
dirmessage_enable=yes  
xferlog_enable=yes  
connet_from_port_20=yes  
xferlog_file=/va/log/vsftpd.log  #取消注释符“#”,当xferlog_enable的值为YES时,日志将记录在xferlog_file定义的文件中。
xferlog_std_format=yes  
listen=yes

修改防火墙

[fanmaolin@Centeros ~]$ sudo service vsftpd start #启动vsftpd
Starting vsftpd for vsftpd:                                [  OK  ]
[fanmaolin@Centeros ~]$ sudo /sbin/iptables -I INPUT -p tcp --dport 21 -j ACCEPT  #打开21端口
[fanmaolin@Centeros ~]$ sudo /etc/rc.d/init.d/iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
[fanmaolin@Centeros ~]$ sudo service iptables restart
iptables: Setting chains to policy ACCEPT: filter mangle na[  OK  ]
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Unloading modules:                               [  OK  ]
iptables: Applying firewall rules:                         [  OK  ]

这样子就可以登录ftp了

centos连接ftp后下载文件 centos从ftp下载文件_用户登录

参考链接:

总结:

无法启动vsftpd

[fanmaolin@Centeros ~]$ service vsftpd restart
Shutting down vsftpd:                                      [FAILED]
可能是21端口被占用
[fanmaolin@Centeros ~]$ sudo netstat -natp | grep 21
tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      5460/vsftpd         
tcp        0      0 192.168.216.128:22          192.168.216.1:50934         ESTABLISHED 5180/sshd           
tcp        0      0 192.168.216.128:22          192.168.216.1:55972         ESTABLISHED 5305/sshd           
tcp        0      0 192.168.216.128:22          192.168.216.1:52572         ESTABLISHED 4465/sshd

进行查看后发现是上次启动的没有关闭

[fanmaolin@Centeros ~]$ sudo service vsftpd stop           
Shutting down vsftpd:                                      [  OK  ]

[fanmaolin@Centeros ~]$ sudo netstat -natp | grep 21
tcp        0      0 192.168.216.128:22          192.168.216.1:50934         ESTABLISHED 5180/sshd           
tcp        0      0 192.168.216.128:22          192.168.216.1:55972         ESTABLISHED 5305/sshd           
tcp        0      0 192.168.216.128:22          192.168.216.1:52572         ESTABLISHED 4465/sshd           

[fanmaolin@Centeros ~]$ sudo service vsftpd start
Starting vsftpd for vsftpd:                                [  OK  ]

解决问题。

登录ftp显示时间过长

重新启动虚拟机后解决问题。