Linux下如何使用FTP?详细操作步骤解析

在Linux系统中,FTP(File Transfer Protocol,文件传输协议)是一种常用的文件传输方式,主要用于在客户端和服务器之间进行文件的上传、下载等操作,Linux下既可以通过配置FTP服务端实现文件共享,也可以使用客户端工具连接远程FTP服务器,本文将从服务端搭建、客户端使用、常见问题解决等方面详细介绍Linux下如何使用FTP。

linux下如何使用ftp

Linux下FTP服务端搭建(以vsftpd为例)

vsftpd(Very Secure FTP Daemon)是Linux下常用的FTP服务端软件,以其安全性高、稳定性强著称,以下是搭建vsftpd服务端的详细步骤:

安装vsftpd

不同Linux发行版的包管理器不同,安装命令如下:

  • Ubuntu/Debian系统
    sudo apt update
    sudo apt install vsftpd -y
  • CentOS/RHEL系统
    sudo yum install vsftpd -y

配置vsftpd

vsftpd的主配置文件为/etc/vsftpd/vsftpd.conf,使用以下命令备份原配置文件后开始编辑:

sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
sudo vim /etc/vsftpd/vsftpd.conf

以下是关键配置参数及说明(部分参数需根据需求调整):

参数名 默认值 说明 示例配置
anonymous_enable YES 是否允许匿名登录 anonymous_enable=NO
local_enable YES 是否允许本地用户登录 local_enable=YES
write_enable YES 是否允许文件写入(上传、创建目录等) write_enable=YES
chroot_local_user NO 是否限制本地用户仅能访问其主目录 chroot_local_user=YES
allow_writeable_chroot NO 是否允许被chroot的用户拥有写权限(需与chroot_local_user配合) allow_writeable_chroot=YES
pasv_enable YES 是否启用被动模式(适用于内网环境,避免客户端主动连接被防火墙拦截) pasv_enable=YES
pasv_min_port 60000 被动模式最小端口 pasv_min_port=10000
pasv_max_port 60100 被动模式最大端口 pasv_max_port=10100
user_sub_token $USER 虚拟用户目录的用户名变量 local_root=/home/$USER
user_config_dir /etc/vsftpd_user_conf 虚拟用户配置文件目录 user_config_dir=/etc/vsftpd_user_conf

配置要点

  • 禁用匿名登录(anonymous_enable=NO),提升安全性;
  • 启用本地用户并限制其主目录(chroot_local_user=YES + allow_writeable_chroot=YES),防止用户越权访问;
  • 若需支持被动模式,需开放pasv_min_portpasv_max_port的端口范围(如10000-10100),并在防火墙中放行。

创建FTP用户并设置权限

若使用本地用户登录,需创建或指定系统用户,并设置其主目录权限:

# 创建新用户(例如ftpuser),并设置主目录为/home/ftpuser
sudo useradd -m -d /home/ftpuser -s /sbin/nologin ftpuser
# 设置用户密码
sudo passwd ftpuser
# 设置主目录权限(所有者为ftpuser,权限为755)
sudo chown -R ftpuser:ftpuser /home/ftpuser
sudo chmod -R 755 /home/ftpuser

若需限制用户仅能通过FTP登录(禁止SSH登录),可修改其shell为/sbin/nologin(如上述命令所示)。

启动并设置开机自启

# 启动vsftpd服务
sudo systemctl start vsftpd
# 设置开机自启
sudo systemctl enable vsftpd
# 查看服务状态
sudo systemctl status vsftpd

防火墙配置

开放FTP默认端口(21)及被动模式端口(以10000-10100为例):

  • Ubuntu/Debian(ufw防火墙)
    sudo ufw allow 21/tcp
    sudo ufw allow 10000:10100/tcp
    sudo ufw reload
  • CentOS/RHEL(firewalld防火墙)
    sudo firewall-cmd --permanent --add-service=ftp
    sudo firewall-cmd --permanent --add-port=10000-10100/tcp
    sudo firewall-cmd --reload

Linux下FTP客户端使用

Linux下FTP客户端分为命令行工具和图形界面工具,以下是常用工具的使用方法:

linux下如何使用ftp

命令行客户端:ftp(基础工具)

ftp是Linux系统自带的FTP客户端,功能简单,适合快速操作。

基本步骤

# 连接FTP服务器(格式:ftp [服务器IP/域名])
ftp 192.168.1.100
# 输入用户名和密码(若为匿名登录,用户名为anonymous,密码留空)
Name: ftpuser
Password: *******

常用命令
| 命令 | 功能 | 示例 |
|————–|————————–|————————–|
| ls | 列出服务器当前目录文件 | ls |
| cd [目录名] | 切换服务器目录 | cd /home/ftpuser/upload |
| get [文件名] | 下载服务器文件到本地 | get test.txt |
| put [文件名] | 上传本地文件到服务器 | put local_file.txt |
| mget [文件名]| 批量下载文件(支持通配符)| mget .txt |
| mput [文件名]| 批量上传文件 | mput
.log |
| ! [命令] | 执行本地系统命令 | ! ls -l |
| bye | 退出FTP连接 | bye |

注意事项

  • ftp命令传输文件为明文,安全性低,建议仅在可信网络中使用;
  • 若下载/上传大文件,建议使用lftp(支持断点续传)。

命令行客户端:lftp(增强工具)

lftp功能更强大,支持多线程、断点续传、SFTP/FTPS等协议,推荐使用。

安装

  • Ubuntu/Debian:sudo apt install lftp
  • CentOS/RHEL:sudo yum install lftp

基本使用

# 连接服务器(格式:lftp [服务器IP/域名])
lftp 192.168.1.100
# 输入用户名和密码
lftp ftpuser@192.168.1.100:~> password

常用命令(与ftp类似,但支持更多高级功能):

  • mirror [本地目录] [远程目录]:同步本地和远程目录(双向);
  • set ftp:passive-mode on:开启被动模式(解决内网连接问题);
  • pget [文件名]:多线程下载大文件(格式:pget -n 8 large_file-n为线程数)。

图形界面客户端:FileZilla

FileZilla是跨平台的FTP客户端,支持拖拽上传/下载、断点续传,适合不熟悉命令行的用户。

linux下如何使用ftp

安装

  • Ubuntu/Debian:sudo apt install filezilla
  • CentOS/RHEL:需先安装EPEL源,sudo yum install filezilla

使用步骤

  1. 打开FileZilla,点击“文件”→“站点管理器”;
  2. 新建站点,设置“主机”(服务器IP)、“端口”(默认21)、“协议”(FTP)、“加密”(使用“普通FTP”即可,若需加密选“使用FTPES”);
  3. 输入“用户名”和“密码”,点击“连接”;
  4. 连接成功后,左侧为本地文件,右侧为远程服务器文件,拖拽即可传输。

常见问题与注意事项

  1. 问题:客户端连接FTP服务器时提示“530 Login incorrect”。
    原因:用户名或密码错误;用户被禁止登录(如shell为/sbin/nologin但未配置FTP权限)。
    解决:检查用户名密码,确认用户shell是否为/bin/bash(或允许登录的shell),或修改/etc/vsftpd/ftpusers(禁止登录的用户列表)和/etc/vsftpd/user_list(默认禁止登录,需配置userlist_enable=NOuserlist_deny=NO)。

  2. 问题:被动模式下连接超时。
    原因:服务器未开放被动模式端口,或客户端防火墙拦截了被动端口。
    解决:确认服务器vsftpd.confpasv_enable=YES及端口范围,并在服务器防火墙和客户端防火墙中开放对应端口。

  3. 问题:用户无法上传文件,提示“553 Could not create file”。
    原因:目录权限不足(如主目录权限为755,但上传子目录无写权限)。
    解决:检查目录权限,确保用户对目标目录有写权限(如chmod 755 /home/ftpuser/upload)。

相关问答FAQs

Q1:为什么推荐使用SFTP而不是FTP?
A:FTP协议在传输过程中,用户名、密码及文件数据均为明文传输,容易被网络中间人窃取,安全性较低,而SFTP(SSH File Transfer Protocol)基于SSH协议,所有数据均经过加密传输,安全性更高,且支持文件权限、属性等高级功能,是目前Linux环境下文件传输的首选方案,若需使用SFTP,只需在服务器上启用SSH服务(默认已安装),客户端使用sftp命令或FileZilla的SFTP协议即可连接。

Q2:使用ftp命令下载文件时,如何指定本地保存路径?
A:在ftp客户端中,可通过lcd命令切换本地保存路径,需将下载文件保存到/home/user/download目录,操作步骤如下:

ftp> lcd /home/user/download  # 切换本地路径
ftp> get remote_file.txt      # 下载文件到当前本地路径

若需在下载时直接重命名文件,可在get命令后指定新名称,如get remote_file.txt local_file.txt

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/31034.html

(0)
酷番叔酷番叔
上一篇 2025年9月27日 01:02
下一篇 2025年9月27日 01:57

相关推荐

  • linux如何从键盘上输入

    Linux中,通过打开终端或控制台,直接在命令行提示符下输入指令并

    2025年8月10日
    3400
  • Linux日志滚动如何避免磁盘空间耗尽?

    查看日志滚动的配置日志滚动由 logrotate 工具管理,配置文件位于:主配置文件cat /etc/logrotate.conf此文件定义全局设置(如日志保存周期、压缩选项),关键参数:weekly:每周滚动一次rotate 4:保留最近4份归档日志compress:启用gzip压缩旧日志服务专属配置各服务的……

    2025年6月16日
    5700
  • Linux执行.sh文件必学技巧?,或,Shell脚本如何提升Linux效率?,或,如何安全运行.sh脚本?

    基础执行方法添加执行权限(关键步骤) chmod +x your_script.sh # 赋予脚本可执行权限原理:Linux文件默认无执行权限,chmod +x修改权限位,验证权限:ls -l your_script.sh 查看是否包含 -rwxr-xr-x,直接执行脚本 ./your_script.sh……

    2025年6月14日
    5800
  • Linux驱动网卡的具体流程是怎样的?

    Linux系统中,网卡驱动是连接硬件设备与操作系统的核心桥梁,其作用是将网卡的硬件抽象为内核可识别的网络设备,并实现数据包的收发、控制命令的解析与执行等功能,Linux内核采用分层设计思想,网卡驱动作为设备驱动层的一部分,需向上通过网络协议栈(如TCP/IP)提供标准接口,向下通过总线子系统(如PCIe)与硬件……

    2025年8月31日
    3600
  • 清除分区表真的会永久删除所有数据吗?

    ▸ 仅适用于:报废磁盘初始化、系统重装或专业数据销毁场景▸ 必须确认:已备份关键数据,且准确识别目标磁盘设备名(如 /dev/sda)▸ 严禁操作:正在运行系统的启动磁盘(除非在救援模式)操作前关键准备识别目标磁盘sudo fdisk -l # 列出所有磁盘sudo lsblk # 查看块设备树状结构▸ 确认磁……

    2025年7月31日
    3500

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信