温馨提示×

Linux vsftp使用教程:如何上传下载文件

小樊
55
2025-10-03 09:55:50
栏目: 智能运维

Linux vsftpd文件上传下载使用教程

一、前置准备:安装与配置vsftpd

1. 安装vsftpd

在Debian/Ubuntu系统上,使用以下命令安装:
sudo apt update && sudo apt install vsftpd
在CentOS/RHEL系统上,使用以下命令安装:
sudo yum install vsftpd

2. 配置vsftpd(关键安全与功能设置)

编辑主配置文件/etc/vsftpd.conf(建议修改前备份):

sudo nano /etc/vsftpd.conf

修改或添加以下核心配置(按需调整):

  • 启用本地用户登录local_enable=YES(允许系统用户通过FTP登录);
  • 允许文件上传write_enable=YES(开启上传权限);
  • 锁定用户主目录(增强安全):chroot_local_user=YES(将用户限制在自己的家目录,如/home/username);
  • 允许chroot目录可写(若需上传到主目录):allow_writeable_chroot=YES(避免“只读目录”错误);
  • 启用被动模式(解决防火墙/NAT连接问题):pasv_enable=YESpasv_min_port=1024pasv_max_port=1048(设置被动模式端口范围)。

保存配置后,重启vsftpd服务使更改生效:

sudo systemctl restart vsftpd

3. 配置防火墙

允许FTP服务(端口21)和被动模式端口范围通过防火墙:

  • Ubuntu(ufw)
    sudo ufw allow 21/tcp
    sudo ufw allow 1024:1048/tcp  # 被动模式端口范围
    sudo ufw reload
    
  • CentOS(firewalld)
    sudo firewall-cmd --permanent --add-service=ftp
    sudo firewall-cmd --permanent --add-port=1024-1048/tcp
    sudo firewall-cmd --reload
    

二、使用FTP客户端连接服务器

1. 命令行客户端(ftp/ncftp)

使用系统自带的ftp命令连接服务器:

ftp 服务器IP地址

输入用户名和密码完成登录(如本地用户test,则输入test及对应密码)。
若需更便捷的命令行工具,可安装ncftp

sudo apt install ncftp  # Debian/Ubuntu
sudo yum install ncftp  # CentOS/RHEL

使用ncftp连接:

ncftp 服务器IP地址

2. 图形界面客户端(推荐)

  • FileZilla(跨平台):
    打开FileZilla,输入服务器IP、用户名、密码及端口(默认21),点击“快速连接”即可。
  • WinSCP(Windows专用):
    打开WinSCP,选择“SFTP”协议(更安全),输入服务器信息和登录凭证,点击“登录”。

三、文件上传操作

1. 命令行上传(ftp/ncftp)

  • ftp客户端
    登录后,使用put命令上传文件:

    ftp> put 本地文件路径 远程文件路径
    

    示例:将本地的/home/test/file.txt上传到服务器当前目录(如/home/test),命令为:

    ftp> put /home/test/file.txt file.txt
    

    若需保留本地文件名,可省略远程文件名:

    ftp> put /home/test/file.txt
    
  • ncftp客户端
    登录后,直接使用put命令(用法与ftp类似):

    ncftp> put /home/test/file.txt
    

    或批量上传目录(递归):

    ncftp> mput -r /home/test/directory/
    

2. 图形界面上传(FileZilla/WinSCP)

  • FileZilla
    在本地面板(左侧)找到要上传的文件,拖动至远程面板(右侧)的目标目录即可。
  • WinSCP
    在本地窗口(左侧)选中文件,拖动至远程窗口(右侧)的目标目录。

四、文件下载操作

1. 命令行下载(ftp/ncftp)

  • ftp客户端
    登录后,使用get命令下载文件:

    ftp> get 远程文件路径 本地文件路径
    

    示例:将服务器当前目录的file.txt下载到本地的/home/localuser/目录,命令为:

    ftp> get file.txt /home/localuser/file.txt
    

    若需保留远程文件名,可省略本地文件名:

    ftp> get file.txt
    
  • ncftp客户端
    登录后,使用get命令(用法与ftp类似):

    ncftp> get file.txt
    

    或批量下载目录(递归):

    ncftp> mget -r directory/
    

2. 图形界面下载(FileZilla/WinSCP)

  • FileZilla
    在远程面板(右侧)找到要下载的文件,拖动至本地面板(左侧)的目标目录。
  • WinSCP
    在远程窗口(右侧)选中文件,拖动至本地窗口(左侧)。

五、常见问题排查

1. 上传失败(Permission Denied)

  • 原因1:未开启写入权限(检查write_enable=YES是否设置);
  • 原因2:chroot目录不可写(检查allow_writeable_chroot=YES是否设置);
  • 原因3:磁盘空间不足(使用df -h查看磁盘空间)。

2. 连接超时

  • 原因1:防火墙未开放端口(检查21端口及被动模式端口范围是否放行);
  • 原因2:vsftpd服务未启动(使用sudo systemctl status vsftpd检查服务状态,未启动则sudo systemctl start vsftpd)。

3. 被动模式连接失败

  • 原因:被动模式端口范围未正确配置或防火墙未开放;
  • 解决:确认pasv_min_portpasv_max_port设置(如1024-1048),并在防火墙中开放该范围。

通过以上步骤,即可完成vsftpd的文件上传下载操作。建议优先使用SFTP(基于SSH的加密协议)替代FTP,提升数据传输安全性。

0