FTP介绍 使用vsftpd搭建ftp xshell使用xftp传输文件 使用pure-ftpd搭建ftp服务

1、FTP介绍

  • FTP是File Transfer Protocol(文件传输协议,简称文传协议)的英文简称,用于在Internet上控制文件的双向传输。FTP的主要作用就是让用户连接一个远程计算机(这些计算机上运行着FTP服务器程序),并查看远程计算机中的文件,然后把文件从远程计算机复制到本地计算机,或把本地计算机的文件传送到远程计算机。小公司用的多,大企业不用FTP,因为不安全。
  • 用rz和sz传文件,文件大小超过4G就会出现问题
  1. rz把 window 上的文件传输到 linux 上
  2. sz 把 linux 上的文件传输到 window 上

2、使用vsftpd搭建ftp

  • 在centos上默认自带的ftp服务软件包叫做vsftpd,vsftpd软件包是可以使用系统级别的用户,(也就是假设创建了一个普通用户user1,设置一个密码,这时候就可以用vsftpd启动这个服务,然后用user1这个用户去登陆,登录的形式为ftp,登录进去后会进入到user1这个用户的家目录下,但这样操作会存在安全隐患)

  • 解决隐患的方法:给ftp设置一个虚拟用户,虚拟用户映射成系统中的一个普通用户(也可以映射多个虚拟用户),这个用户即使给了用户和密码你也是没有办法去通过ssh登录到服务器的机器,这样就相对安全了很多

  • 安装vsftpd

[root@aminglinux ~]# yum install -y vsftpd
  • 创建虚拟用户,并映射到系统普通用户来使用vsftpd
[root@aminglinux ~]# useradd -s /sbin/nologin virftp

用户名字可以随意取;-s 指定它的shell;/sbin/nologin 表示这个用户不能登录到系统,这么做是为了安全

  • 编辑 vim /etc/vsftpd/vsftpd_login 虚拟用户的密码文件,在密码文件中定义用户名和密码;文件格式为:奇数行为用户名,偶数行为密码,多个用户就写多行
[root@aminglinux ~]# vim /etc/vsftpd/vsftpd_login

testuser1
123456
user1
654321
  • 给 /etc/vsftpd/vsftpd_login 文件做一个 600的权限设置,为了确保密码文件的安全,防止所有的用户都可以读取
[root@aminglinux ~]# chmod 600 /etc/vsftpd/vsftpd_login
  • 将文本的密码文件装换成二进制的密码文件:增加安全性
[root@aminglinux ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db

[root@aminglinux ~]# ll /etc/vsftpd/
总用量 36
-rw------- 1 root root   125 83 2017 ftpusers
-rw------- 1 root root   361 83 2017 user_list
-rw------- 1 root root  5030 83 2017 vsftpd.conf
-rwxr--r-- 1 root root   338 83 2017 vsftpd_conf_migrate.sh
-rw------- 1 root root    30 715 16:13 vsftpd_login
-rw-r--r-- 1 root root 12288 715 16:15 vsftpd_login.db
  • 在/etc/vsftpd/目录下,会看到生成了一个vsftpd_login.db文件,它和vsftpd_login文件相比只是多了一个 .db 的后缀;这个vsftpd_login.db密码是不能用 cat命令 查看的,在上面的密码文件是可以自定义的

  • 创建虚拟用户的目录和配置文件

[root@aminglinux ~]# mkdir /etc/vsftpd/vsftpd_user_conf
[root@aminglinux ~]# cd /etc/vsftpd/vsftpd_user_conf
[root@aminglinux vsftpd_user_conf]# vim testuser1
#配置文件内容

local_root=/home/virftp/testuser1     //指定虚拟用户的家目录
anonymous_enable=NO                    //是否允许匿名用户
write_enable=YES                              //是否可写
local_umask=022                              //创建新文件目录的默认权限
anon_upload_enable=NO                  //是否允许匿名用户上传
anon_mkdir_write_enable=NO          //是否允许匿名用户创建目录和写
idle_session_timeout=600                 //连接ftp超时时间(秒)
data_connection_timeout=120         //数据传输的超时时间(秒)
max_clients=10                                //最多允许同时几个终端连接

创建虚拟用户testuser1的家目录;并创建一个测试文件

[root@aminglinux vsftpd_user_conf]# mkdir /home/virftp/testuser1
[root@aminglinux vsftpd_user_conf]# touch /home/virftp/testuser1/ftptest.txt
  • 修改/home/virftp/的主和组,修改家目录的主和组为virftp
[root@aminglinux vsftpd_user_conf]# chown -R virftp:virftp /home/virftp
  • 定义认证的文件/etc/pam.d/vsftpd;文件在最前面加上
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
[root@aminglinux vsftpd_user_conf]# vim /etc/pam.d/vsftpd

#%PAM-1.0
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
session    optional     pam_keyinit.so    force revoke
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth       required     pam_shells.so
auth       include      password-auth
account    include      password-auth
session    required     pam_loginuid.so
session    include      password-auth
  • /etc/pam.d/vsftpd,它是一个用来认证的文件,在登录FTP需要有一个认证的过程,认证的过程需要告诉它,通过什么样的形式去认证,认证的时候去哪里找这个密码库

  • 在/etc/pam.d/vsftpd 添加的/lib64/security/pam_userdb.so,centos6中是为了区分版本,分32位和64位,一定要注意这个文件是存在的(lib64或lib32)

    扫描二维码关注公众号,回复: 3033072 查看本文章
  • 编辑 /etc/vsftpd/vsftpd.conf 主配置文件

[root@aminglinux 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
  • 启动vsftpd服务,并查看进程和监听的端口
[root@aminglinux ~]# systemctl start vsftpd
[root@aminglinux ~]# ps aux |grep vsftpd
root      1850  0.0  0.0  53256   572 ?        Ss   01:45   0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root      1853  0.0  0.0 112720   980 pts/0    S+   01:46   0:00 grep --color=auto vsftpd
[root@aminglinux ~]#  netstat -lntp |grep vsftpd
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      1850/vsftpd         
[root@aminglinux ~]#

3、xshell使用xftp传输文件

  1. 在xshell按快捷键 ctrl+alt+f ,会自动弹出一个xftp的提示下载界面
  2. 选择下载以后,会进入一个填写资料的页面,上面的是免费的,下面的收费的,我们选择上面一个填写资料
  3. 邮箱项,很重要。因为会在你的邮箱里有下载地址和使用教程,是通过邮箱发送,而且最好使用一些比较权威的邮箱;如果是qq邮箱国外发送邮件会有一些延迟;
  4. 获取到下载地址开始下载,就可以直接下载了
  5. 下载完成后,直接默认安装,就可以使用了,这时再使用xshell登录主机,按下ctrl+alt+f;就会弹出一个xftp的页面

  • 打开之后会进入到root目录下,使用的是ssh协议
  • 这时在虚拟机上暂停掉21端口,会发现仍然可以传输文件
  • 若是需要下载linux系统里的文件,只需双击,或者直接拖动到左边(桌面)就会有下载的文件
  • xftp走的是ssh协议,不属于ftp,这种只要是linux开启了sshd服务就可以用。
  • vsftp获取其他ftp软件实现的是ftp服务,windows上可以搭建,linux上也可以搭建

4、使用pure-ftpd搭建ftp服务

  • pure-ftpd是一款比vsftpd更轻量化更简便的ftp工具
  • 安装pure-ftpd:使用epel源安装:
  1. yum install -y epel-release
  2. yum install -y pure-ftpd
  • 配置pure-ftpd:先关闭之前启动的vsftpd,因为都是使用21端口,避免端口冲突
[root@aminglinux ~]# vim /etc/pure-ftpd/pure-ftpd.conf
#PureDB /etc/pure-ftpd/pureftpd.pdb //找到这行,把前面的#号注释删掉。
[root@aminglinux ~]# systemctl stop vsftpd   //关闭vsftpd
[root@aminglinux ~]# systemctl start pure-ftpd  //启动pure-ftpd
[root@aminglinux ~]# netstat -lntp |grep pure-ftpd
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      1979/pure-ftpd (SER 
tcp6       0      0 :::21                   :::*                    LISTEN      1979/pure-ftpd (SER 
[root@aminglinux ~]#
  • 创建测试目录,为了给pure-ftpd用户使用,再创建用户 把/data/ftp的属主和属组改成pure-ftp
[root@aminglinux ~]# mkdir /data/ftp   //创建ftp共享目录
[root@aminglinux ~]# useradd -u 1010 pure-ftp   //指定uid
[root@aminglinux ~]# chown -R pure-ftp:pure-ftp /data/ftp/  //修改目录主和组
  • 用pure-pw useradd 命令创建一个用户
  • pure-pw useradd [指定用户] -u [指定系统用户] -d [指定虚拟用户的家目录]
[root@aminglinux ~]# pure-pw useradd ftp_user -u pure-ftp -d /data/ftp  //用pure-pw创建ftp用户,-u映射到系统用户,-d指定ftp用户的家目
Password: 
Enter it again:
  • pure-pw mkdb //不执行这一步是无法登录的
[root@aminglinux ~]# pure-pw mkdb
  • 测试: 在ftp家目录下创建一个测试文件:touch /data/ftp/abc.txt
[root@aminglinux ~]# touch /data/ftp/abc.txt
[root@aminglinux ~]# lftp ftp_user@127.0.0.1
口令: 
lftp ftp_user@127.0.0.1:~> ls       
drwxr-xr-x    2 1010       pure-ftp           21 Jul 16 02:20 .
drwxr-xr-x    2 1010       pure-ftp           21 Jul 16 02:20 ..
-rw-r--r--    1 0          0                   0 Jul 16 02:20 abc.txt
lftp ftp_user@127.0.0.1:/>

猜你喜欢

转载自blog.csdn.net/xou6363/article/details/81059057