Windows访问Linux下的FTP服务器(Centos和Uuntu)

发布时间 2023-09-08 11:04:35作者: Java-三尺青锋

centos7.9版本

  1.下载FTP离线安装包:

    http://rpmfind.net/linux/rpm2html/search.php?query=vsftpd(x86-64)    选择最后一个 vsftpd-3.0.2-28.el7.x86_64.rpm

  2.检查是否已经安装了vsftp

    rpm -qa | grep vsftpd

    出现提示vsftpd版本号则表示已安装,没有则未安装

  3.安装vsftpd(推荐离线)   

    离线安装 rpm -ivh vsftpd-3.0.2-22.el7.x86_64.rpm
    在线安装 yum install -y vsftp

  4.安装过程可能会报错    

    [root@yjy-pt01 vsftpd]$ rpm -ivh vsftpd-3.0.2-22.el7.x86_64.rpm

    warning: vsftpd-3.0.2-22.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
    error: Failed dependencies:
    libc.so.6(GLIBC_2.14)(64bit) is needed by vsftpd-3.0.2-22.el7.x86_64
    libc.so.6(GLIBC_2.15)(64bit) is needed by vsftpd-3.0.2-22.el7.x86_64

  解决:安装相关依赖

    rpm -ivh libcap-2.16-5.5.el6.x86_64.rpm 

    rpm -ivh libcap-devel-2.16-5.5.el6.x86_64.rpm

  若是执行上面命令依然提示 安装依赖失败 ,可执行如下命令强制执行

    rpm -ivh libcap-2.16-5.5.el6.x86_64.rpm  --nodeps --force

    rpm -ivh libcap-devel-2.16-5.5.el6.x86_64.rpm --nodeps --force

    上述依赖链接地址可根据不同系统版本下载相应依赖rpm包:https://centos.pkgs.org/7/centos-x86_64/

    例如下载libcap-2.16-5.5.el6.x86_64.rpm包 链接地址即是:https://centos.pkgs.org/7/centos-x86_64/libcap-2.16-5.5.el6.x86_64.rpm

  5.检查是否安装成功

    rpm -qa | grep vsftpd    出现版本号vsftpd-2.2.2-24.el6.x86_64 #,即表示安装成功

  6.安装好ftp之后,执行命令查看vsftpd服务是否在运行状态

    systemctl status vsftpd.service   若是在运行 即可看到 actving

  7.创建用户 

     1.# 创建ftp目标文件夹 mkdir /home/testFtp

     2.chmod 755 /home/testFtp

     3.# 创建用户 useradd -d /home/testFtp -s /sbin/nologin -g ftp -G root testUser

     4.# 设置密码 我设置的是 Test@123 passwd testUser   密码可随意设置

     5.# 更改用户testUser 的主目录为/home/testFtp 执行命令:usermod -d /home/testFtp testUser

     6.# 上述命令参数解释如下 :  #useradd 添加用户testUser

                  #-d 指定用户根目录为/home/testFtp

                  #-s 指定shell脚本为/sbin/nologin,表示不允许shell登录

                  #-g 创建分组ftp

                  #-G 指定root分组

  8.配置vsftpd 

    1. 修改vsftpd配置文件 vi /etc/vsftpd/vsftpd.conf

    找到一下内容修改成和我一样的:  

        anonymous_enable=NO
        local_root=/home/testFtp
        chroot_local_user=YES
        chroot_list_enable=YES
        # chroot_list文件中放的是限制目录的用户,防止里面的用户进入ftp目录以外的目录
        chroot_list_file=/etc/vsftpd/chroot_list
        pam_service_name=vsftpd
        userlist_enable=YES
        tcp_wrappers=YES
        #下面自己加,上面的都有,仔细寻找和对比
        userlist_deny=NO
        allow_writeable_chroot=YES

    2.编辑chroot_list文件

      vi /etc/vsftpd/chroot_list#添加一行 就是你创建的用户名 有多个的话一行一个

      # 我这里写是为了不限制 testUser只能访问指定目录,一般是要限制的也就是不需要写进这个文件

      testUser

    3.编辑user_list文件

       vi /etc/vsftpd/user_list

       #添加一行 就是你创建的用户名 有多个的话一行一个

        testUser

    4.修改另一个文件 (防止后面登陆出现 530 Login incorrect 错误)

      cd /etc/pam.d/

                  vi vsftpd

      # 把第四行 pam_shells.so 的改成下面这个
      pam_nologin.so

    5启停命令,每次修改vsftpd.conf都要重启

      #启动

      service vsftpd start 或 systemctl start vsftpd.service
      #停止
      service vsftpd stop 或 systemctl stop vsftpd.service
      #重启
      service vsftpd restart 或 systemctl restart vsftpd.service

   9.Windows连接测试  

    1.   win + R 输入cmd
    2.   输入ftp
    3.   输入open 192.168.209.129 (换成你的IP)
    4.   输入用户名testUser
    5.   输入密码Test@123
    6.   看到230 Login successful.即为成功,之后便可以使用ftp工具连接了。
    7.       出现530 Login incorrect错误时,需要先确定用户名、密码、主机地址和端口是否正确,如果都正确,再检查本地是否开启了21端口
    8.       检查20 21端口服务器是否开启,查看开启端口firewall-cmd --list-all 开启20,21端口firewall-cmd --zone=public --add-port=20/tcp --permanent
    9.       firewall-cmd --zone=public --add-port=20/tcp --permanent 然后重启防火墙 irewall-cmd  --reload
    10.      报错:打开FTP服务器上的文件夹时发生错误,请检查是否有权限访问该文件夹
    11.     

    12. 设置IE浏览器 —— Internet选项 —— 高级 —— 将使用被动FTP(用于防火墙和DSL调制解调器的兼容)选项去掉 —— 确定 

    13. 用IE及IE内核的浏览器(如360等)登录Linnux空间FTP

      需要使用ftp://用户名:密码@ftp地址来访问 例如:

      ftp://hqx:123@192.168.4.39

    14. 依照上面方法,windwos端依然无法登陆访问ftp的话,参照下面方式解决:

    15. 检查ftp服务是否已开启:控制面板 —— 程序 —— 启用或关闭windows功能

    16. 找到Internet Information Services里的FTP服务器,并勾选FTP服务FTP扩展性

    17.  

      找到TFTP客户端,并勾选,点击 “确定” 等待系统自动安装程序完毕

    18. 控制面板 —— 系统和安全 —— 点击Windows防火墙下的 “允许应用通过Windows防火墙”

    19. 在列表中确认 “Windows资源管理器” 右侧的两个勾选,如果没有勾选则点击上方的 “更改设置” 。

        

  补充知识

    /etc/vsftpd下的文件作用: 

    1. ftpusers:指定了哪些用户账户不能访问FTP服务器,例如root等。 如果想要root 登录 则注释里面的root
    2. user_list:可以作为用户白名单,或者是黑名单,或者无效名单。完全由userlist_enable和userlist_deny这两个参数决定。
      效果如下:

      #拒绝文件中的用户FTP访问
      userlist_enable=YES userlist_deny=YES
      # 拒绝除文件中的用户外的用户FTP访问
      userlist_enable=YES userlist_deny=NO
      # 基本可以认为user_list文件无用
      userlist_enable=NO userlist_deny=YES/NO

 

Ubuntu 版本

  

一、 FTP

1.1 安装ftp

    sudo apt-get install vsftpd

  1.2 配置FTP

    sudo gedit /etc/vsftpd.conf

    将下面三个属性的注释取消,即设置不允许匿名登录、允许本地用户登录、允许修改文件

      # Allow anonymous FTP? (Disabled by default).

      anonymous_enable=NO

      # Uncomment this to allow local users to log in.
      local_enable=YES
      #
      # Uncomment this to enable any form of FTP write command.
      write_enable=YES
  

    在文件末尾添加 

      allow_writeable_chroot=YES

     在文件末尾添加下面属性、锁定一个共享目录(根据自己情况设置)

    local_root=home/bit/shareFile  

    取消下面三个属性的注释,在文件vsftpd.chroot_list中保存的是可访问的用户

    chroot_local_user=YES

    chroot_list_enable=YES
    # (default follows)
    chroot_list_file=/etc/vsftpd.chroot_list

    注意

    自己添加的两行代码一定没有空格,如何添加了空格,本地浏览器就无法登陆
    一定不能有空格

  1.3添加可访问用户

    sudo vi /etc/vsftpd.chroot_list 

    写入

    bit(用户名,根据自己情况自行填写)
    root

  1.4创建共享文件夹

    mkdir shareFile

    chmod -R 777 shareFile

  1.5重启服务器

      sudo service vsftpd restart

      #启动、关闭的命令
      #启动FTP服务器
      #sudo service vsftpd start
      #关闭FTP服务器
      #sudo service vsftpd stop
      #重启FTP服务器
      #sudo service vsftpd restart

   1.6windows 链接测试如上面 操作即可