[toc]
配置FTP服务
扩展 vsftp使用mysql存放虚拟用户并验证
ftp的主动和被动模式
一、FTP介绍
我们之前传输文件所用的是rzsz命令,可以简单明了的就把我们所需的文件下载或者上传。但是有个缺陷,不可以上传或者下载大体积的文件。FTP就可以解决这个问题!
1.1 FTP是File Transfer Protocol(文件传输协议,简称文传协议)的英文简称,用于在Internet上控制文件的双向传输。
FTP的主要作用就是让用户连接一个远程计算机(这些计算机上运行着FTP服务器程序),并查看远程计算机中的文件,然后把文件从远程计算机复制到本地计算机,或把本地计算机的文件传送到远程计算机。
小公司用的多,大企业不用FTP,因为不安全。大多数的企业使用git。
二、使用vsftpd搭建ftp服务
2.1 安装服务:
centos上自带vsftpd
[root@xavi ~]# yum install -y vsftpd
2.2 创建用户:
[root@xavi ~]# useradd -s /sbin/nologin virftp
这儿可能会有疑问,我们创建了这个用户为什么不可以nologin呢?安全 然后我们就用到了如下虚拟用户:
2.3 配置虚拟用户:
[root@xavi ~]# vim /etc/vsftpd/vsftpd_login //奇数行为用户名,偶数行为密码,多个用户就写多行!
[root@xavi ~]# vim /etc/vsftpd/vsftpd_login//用户为zhdy密码为asd9577;zhdy02密码为asd9772xavi01linux001xavi02linux002
2.4 授权并把密码文件转换为二进制可识别配置文件:
[root@xavi ~]# chmod 600 /etc/vsftpd/vsftpd_login //为了安全,不允许其他人修改,我们设置为600[root@xavi ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db //再次把密码文件转换为计算机可以识别的配置文件。[root@xavi ~]# ls -l /etc/vsftpd/总用量 36-rw------- 1 root root 125 8月 3 2017 ftpusers-rw------- 1 root root 361 8月 3 2017 user_list-rw------- 1 root root 5030 8月 3 2017 vsftpd.conf-rwxr--r-- 1 root root 338 8月 3 2017 vsftpd_conf_migrate.sh-rw------- 1 root root 32 3月 29 13:10 vsftpd_login-rw-r--r-- 1 root root 12288 3月 29 13:11 vsftpd_login.db
2.5 创建虚拟用户的配置目录:
[root@xavi ~]# mkdir /etc/vsftpd/vsftpd_user_conf //创建配置文件[root@xavi ~]# cd /etc/vsftpd/vsftpd_user_conf
2.6 创建用户配置文件(一定要和你创建的用户名字一致。)
vim xavi001 //加入如下内容local_root=/home/ftpuser/xavi //虚拟用户的家目录anonymous_enable=NO //是否允许匿名用户write_enable=YES //是否允许可写local_umask=022 //创建新目录和文件的权限anon_upload_enable=NO //是否允许匿名用户上传anon_mkdir_write_enable=NO //是否允许匿名用户可创建idle_session_timeout=600 //连接后没有任何操作的超时时间,空闲时间段data_connection_timeout=120 //数据传输超时时间max_clients=10 //最大允许连接的clients客户端
[root@xavi ~]# cd /etc/vsftpd/vsftpd_user_conf[root@xavi vsftpd_user_conf]# vim xavi001local_root=/home/virftp/xavi001anonymous_enable=NOwrite_enable=YESlocal_umask=022anon_upload_enable=NOanon_mkdir_write_enable=NOidle_session_timeout=600data_connection_timeout=120max_clients=10
2.7 配置虚拟用户家目录:
[root@xavi vsftpd_user_conf]# mkdir /home/virftp/xavi01[root@xavi vsftpd_user_conf]# touch /home/virftp/xavi01/xavi.txt[root@xavi vsftpd_user_conf]# chown -R virftp:virftp /home/virftp
2.8 配置认证的路径+文件
[root@xavi vsftpd_user_conf]# vim /etc/pam.d/vsftpd#%PAM-1.0auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_loginaccount sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_loginsession optional pam_keyinit.so force revokeauth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeedauth required pam_shells.soauth include password-authaccount include password-authsession required pam_loginuid.sosession include password-auth-----------------------------------------------------------//在最前面加上auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_loginaccount sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
- 查看下文件是否存在
[root@xavi vsftpd_user_conf]# ls /lib64/security/pam_userdb.so/lib64/security/pam_userdb.so
2.9 配置vsftpd的主配置文件:
[root@xavi vsftpd_user_conf]# vim /etc/vsftpd/vsftpd.conf
将anonymous_enable=YES 改为 anonymous_enable=NO
将#anon_upload_enable=YES 改为 anon_upload_enable=NO
将#anon_mkdir_write_enable=YES 改为 anon_mkdir_write_enable=NO
//再最底下增加如下内容: chroot_local_user=YES guest_enable=YES guest_username=virftp virtual_use_local_privs=YES user_config_dir=/etc/vsftpd/vsftpd_user_conf allow_writeable_chroot=YES
user_config_dir:定义user用户的配置路径。
2.10 启动并查看启动状态:
[root@xavi vsftpd_user_conf]# systemctl start vsftpd[root@xavi vsftpd_user_conf]# ps aux | grep vsftpdroot 2938 0.0 0.0 53216 580 ? Ss 19:57 0:00 /usr/sbin/vsftpd /etcvsftpd/vsftpd.confroot 2940 0.0 0.0 112680 976 pts/0 S+ 19:57 0:00 grep --color=auto vsftpd[root@xavi vsftpd_user_conf]# netstat -lntpActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd tcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN 1128/rpc.mountd tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 1882/dnsmasq tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1064/sshd tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1061/cupsd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1694/master tcp 0 0 0.0.0.0:54910 0.0.0.0:* LISTEN 1067/rpc.statd tcp 0 0 0.0.0.0:37663 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN - tcp6 0 0 :::46701 :::* LISTEN - tcp6 0 0 :::111 :::* LISTEN 1/systemd tcp6 0 0 :::20048 :::* LISTEN 1128/rpc.mountd tcp6 0 0 :::21 :::* LISTEN 2938/vsftpd tcp6 0 0 :::60662 :::* LISTEN 1067/rpc.statd tcp6 0 0 :::22 :::* LISTEN 1064/sshd tcp6 0 0 ::1:631 :::* LISTEN 1061/cupsd tcp6 0 0 ::1:25 :::* LISTEN 1694/master tcp6 0 0 :::2049 :::* LISTEN -
总结:21端口FTP; 22端口SSHD; 23端口TELNET
三、在客户端的FTP测试
3.1 服务器端安装
[root@xavi vsftpd_user_conf]# yum install lftp
3.2 查看服务端的文件
[root@xavi ~]# lftp xavi01@127.0.0.1口令: lftp xavi01@127.0.0.1:~> ls drwxr-xr-x 2 1006 1007 22 Mar 29 11:40 xavi001lftp xavi01@127.0.0.1:/> ? !(commands) alias [ [ ]] attach [PID] bookmark [SUBCMD] cache [SUBCMD] cat [-b] cd chmod [OPTS] mode file... close [-a] [re]cls [opts] [path/][pattern] debug [ |off] [-o ] du [options] exit [ |bg] get [OPTS]
[-o ] glob [OPTS] help [ ] history -w file|-r file|-c|-l [cnt] jobs [-v] [ ] kill all| lcd lftp [OPTS] ln [-s] ls [ ] mget [OPTS] mirror [OPTS] [remote [local]] mkdir [-p] module name [args] more mput [OPTS] mrm mv [re]nlist [ ] open [OPTS] pget [OPTS] [-o ] put [OPTS] [-o ] pwd [-p] queue [OPTS] [ ] quote repeat [OPTS] [delay] [command] rm [-r] [-f] rmdir [-f] scache [ ] set [OPT] [ [ ]] site source torrent [-O ] ... user [ ] wait [ ] zcat zmore
3.3 输入 ? 是用来查看操作的命令。使用 get+文件名 来下载一个文件到根目录!
报错!
lftp xavi01@127.0.0.1:/> get xavi.txtget: Access failed: 550 Failed to open file. (xavi.txt)lftp xavi01@127.0.0.1:/> exit
四、使用xshell来传输,其原理就是:使用sftp模式登录服务器
输如账号密码链接,还是主机xavi001的账号密码
4.1 实验
sftp:/tmp> cd /usr/local/src/sftp:/usr/local/src> lsdrwxr-xr-x 10 root root 4096 Mar 13 23:35 .drwxr-xr-x 21 root root 254 Mar 13 23:43 ..-rw-r--r-- 1 root root 21040959 Mar 18 2017 mysql-5.5.55.tar.gzdrwxr-xr-x 31 7161 31415 4096 Mar 18 2017 mysql-5.5.55-rw-r--r-- 1 root root 316320366 Mar 18 2017 mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz-rw-r--r-- 1 root root 541295045 Feb 28 22:23 mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz-rw-r--r-- 1 root root 8638793 Oct 21 03:39 httpd-2.4.29.tar.gz-rw-r--r-- 1 root root 1072661 Oct 23 01:33 apr-1.6.3.tar.gz-rw-r--r-- 1 root root 554301 Oct 23 01:33 apr-util-1.6.1.tar.gzdrwxr-xr-x 11 501 games 4096 Mar 17 15:57 httpd-2.4.29drwxr-xr-x 28 xavidsf xavidsf 4096 Mar 17 15:33 apr-1.6.3drwxr-xr-x 21 xavidsf xavidsf 4096 Mar 17 15:40 apr-util-1.6.1drwxr-xr-x 17 xavi xavi 4096 Mar 13 22:53 php-5.6.30-rw-r--r-- 1 root root 15011816 Jan 19 2017 php-5.6.30.tar.bz2-rw-r--r-- 1 root root 19274631 Mar 2 11:14 php-5.6.30.tar.gz-rw-r--r-- 1 root root 15732452 Jun 7 2017 php-7.1.6.tar.bz2drwxrwxr-x 19 xavi xavi 4096 Mar 2 16:02 php-7.1.6-rw-r--r-- 1 root root 230093 Mar 11 20:35 phpredis-develop.zipdrwxr-xr-x 11 root root 4096 Mar 11 20:43 phpredis-develop-rw-r--r-- 1 root root 314581668 Nov 28 2016 mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz-rw-r--r-- 1 root root 19274631 Jan 19 2017 php-5.6.30.tar.gz.1-rw-r--r-- 1 root root 981093 Jul 11 2017 nginx-1.12.1.tar.gzdrwxr-xr-x 9 xavidsf xavidsf 186 Mar 13 23:40 nginx-1.12.1sftp:/usr/local/src> get nginx-1.12.1.tar.gzFetching /usr/local/src/nginx-1.12.1.tar.gz to nginx-1.12.1.tar.gzsftp: received 958 KB in 0.06 seconds
在桌面找到了nginx的安装包
五、xshell使用xftp传输文件
- 在xshell界面上按下“ctrl+alt+F”弹出以下对话框
-
点击“Download Xftp”
-
点击下载链接
-
选择评估版
-
填入信息
-
提示在邮箱里有下载链接
-
下载完成后,开始安装,注意选择免费版
-
安装完成后,在打开的虚拟机界面上按下“ctrl+Alt+F”,输入账号密码,如下:
-
选中文件后直接鼠标拖拽就可以到达window界面中
六、使用pure-ftpd搭建ftp服务
6.1 安装并配置pure-ftpd
[root@xavi ~]# yum install -y pure-ftpd[root@xavi ~]# vim /etc/pure-ftpd/pure-ftpd.conf#找到这行,删除前面#号# PureDB /etc/pure-ftpd/pureftpd.pdb
6.2 开启pure-ftpd服务,这里注意vsftpd服务和pure-ftpd服务都是使用了21端口,必须关闭一个才能使用
[root@xavi ~]# systemctl stop vsftpd[root@xavi ~]# systemctl start pure-ftpd [root@xavi ~]# ps aux | grep pure-ftpdroot 3001 0.0 0.0 202480 1208 ? Ss 10:11 0:00 pure-ftpd (SERVER)root 3003 0.0 0.0 112680 972 pts/0 S+ 10:11 0:00 grep --color=auto pure-ftpd
6.3 创建一个用户
[root@xavi ~]# mkdir /data/ftp //创建目录[root@xavi ~]# useradd -u 1010 pure-ftp //创建系统用户[root@xavi ~]# chown -R pure-ftp:pure-ftp /data/ftp/[root@xavi ~]# pure-pw useradd ftp_usera -u pure-ftp -d /data/ftp/ //创建虚拟帐号,-pw设定密码,-u系统用户,-d指定家目录Password:
pure-pw用法
[root@xavi ~]# pure-pwUsage :pure-pw useradd[-f ] -u [-g ] -D/-d [-c ] [-t ] [-T ] [-n ] [-N ] [-q ] [-Q ] [-r / ] [-R / ] [-i / ] [-I / ] [-y ] [-z - ] [-m]pure-pw usermod -f -u [-g ] -D/-d -[c ] [-t ] [-T ] [-n ] [-N ] [-q ] [-Q ] [-r / ] [-R / ] [-i / ] [-I / ] [-y ] [-z - ] [-m]pure-pw userdel [-f ] [-m]pure-pw passwd [-f ] [-m]pure-pw show [-f ]pure-pw mkdb [ [-f ]] [-F ]pure-pw list [-f ]-d : chroot user (recommended)-D : don't chroot user-
6.4 新建一个文本稳定并测试
[root@xavi ~]# pure-pw //关键一步[root@xavi ~]# touch /data/ftp/123.txt[root@xavi ~]# lftp ftp_usera@127.0.0.1口令: lftp ftp_usera@127.0.0.1:~> ls drwxr-xr-x 2 1010 pure-ftp 21 Mar 30 10:20 .drwxr-xr-x 2 1010 pure-ftp 21 Mar 30 10:20 ..-rw-r--r-- 1 0 0 0 Mar 30 10:20 123.txt
6.5 将pure-ftp下文件属性改为与系统文件属性相同1010
[root@xavi ~]# chown pure-ftp:pure-ftp /data/ftp/123.txt[root@xavi ~]# lftp ftp_usera@127.0.0.1口令: lftp ftp_usera@127.0.0.1:~> ls drwxr-xr-x 2 1010 pure-ftp 21 Mar 30 10:20 .drwxr-xr-x 2 1010 pure-ftp 21 Mar 30 10:20 ..-rw-r--r-- 1 1010 pure-ftp 0 Mar 30 10:20 123.txt