• 在云服务器上打开ftp服务-踩坑及心得


    我们产生这个需求的原因是因为打算搭建一个博客,选择了使用wordpress框架。然后,在安装插件的过程中,需要使用FTP服务进行操作。于是,我们决定搞清楚这个过程,并在其中遇到的困难进行记录。

    一、安装vsftpd

    # 安装
    sudo apt-get install vsftpd
    
    # 设置开机自启
    systemctl enable vsftpd
    
    # 启动ftp服务
    systemctl start vsftpd
    
    # 查看ftp状态
    sudo service vsftpd status
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    如果看到下面的状态,说明启动成功

    ● vsftpd.service - vsftpd FTP server
         Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
         Active: active (running) since Mon 2023-10-02 18:59:13 CST; 15min ago
        Process: 1178111 ExecStartPre=/bin/mkdir -p /var/run/vsftpd/empty (code=exited, status=0/SUCCESS)
       Main PID: 1178112 (vsftpd)
          Tasks: 3 (limit: 3942)
         Memory: 1.8M
            CPU: 202ms
         CGroup: /system.slice/vsftpd.service
                 ├─1178112 /usr/sbin/vsftpd /etc/vsftpd.conf
                 ├─1181349 /usr/sbin/vsftpd /etc/vsftpd.conf
                 └─1181351 /usr/sbin/vsftpd /etc/vsftpd.conf
    
    Oct 02 18:59:13 VM-24-9-ubuntu systemd[1]: Starting vsftpd FTP server...
    Oct 02 18:59:13 VM-24-9-ubuntu systemd[1]: Started vsftpd FTP server.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    主要看状态,Active: active (running) 代表正在运行。

    二、创建ftp用户,并给权限

    # 创建用户,此时系统自动创建了用户组ftpuser
    useradd ftpuser
    
    # 设置用户密码
    passwd ftpuser
    
    # 创建ftp文件夹
    mkdir /home/ftpuser
    
    # 给ftp文件夹权限
    chown -R ftpuser:ftpuser /home/ftpuser
    
    # 这里要想要方便省事的话,但是不推荐这么做
    # chmod -R 777 /home/ftpuser
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    三、配置vsftpd

    打开 vsftpd.conf 文件

    sudo vim /etc/vsftpd.conf
    
    • 1

    改为以下配置

    anonymous_enable=NO
    local_enable=YES
    write_enable=YES
    chroot_local_user=YES
    chroot_list_enable=YES
    chroot_list_file=/etc/vsftpd.chroot_list
    listen=YES
    
    local_root=/var/ftp/test
    allow_writeable_chroot=YES
    pasv_enable=YES            # 这里选择被动模式
    pasv_address=xxx.xx.xxx.xx # 修改云服务器公网 IP
    pasv_min_port=40000        # 被动模式需要的开放端口
    pasv_max_port=40005
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    执行以下命令,创建并编辑 chroot_list 文件。

    vim /etc/vsftpd/chroot_list
    
    • 1

    将需要ftp权限的用户添加进去,一行一个

    保存退出后重启服务

    systemctl restart vsftpd
    
    • 1

    四、开放端口

    这里是我踩得坑,明明都一切正常就是不行,最后发现没有开放端口,这里的端口不仅是服务器中的ufw端口,还有云服务器本身的端口。

    首先我们打开ufw也就是linux本身的防火墙

    sudo ufw allow 21/tcp
    
    • 1

    由于我们在被动模式使用了40000-40005号端口,我们也需要打开

    sudo ufw allow 40000/tcp
    sudo ufw allow 40001/tcp
    sudo ufw allow 40002/tcp
    sudo ufw allow 40003/tcp
    sudo ufw allow 40004/tcp
    sudo ufw allow 40005/tcp
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    其次我们需要再云服务器的安全策略中打开这些端口

    请添加图片描述

    五、测试

    可以看到已经可以连接,如果可以连接,但是无法显示文件大概率是权限或者端口开放问题

    请添加图片描述

    六、参考

    腾讯云的教程 https://cloud.tencent.com/document/product/213/10912

    vsftp文档 https://wiki.ubuntu.org.cn/Vsftpd

  • 相关阅读:
    Kotlin协程:Flow的融合、Channel容量、溢出策略
    中国核动力研究设计院使用 DolphinDB 替换 MySQL 实时监控仪表
    CSS3入门
    大型网站系统架构演化实例_9.分布式服务
    flink技术总结待续
    sheng的学习笔记-AI-高斯混合模型(GMM)
    嵌入式开发-STM32硬件I2C驱动OLED屏
    2021-08-25-Tomcat服务器与HTTP协议
    java 注解反射项目实战
    docker部署前后端分离项目
  • 原文地址:https://blog.csdn.net/weixin_43903639/article/details/133499603