Linux如何使用FTP?文件上传下载操作指南

Linux系统下使用FTP(File Transfer Protocol,文件传输协议)是常见的文件传输方式,尤其适用于服务器与客户端之间的文件共享,FTP基于TCP协议,使用21端口进行控制连接,20端口传输数据,支持上传、下载、目录浏览等操作,以下从服务端配置、客户端连接、常用命令及安全注意事项等方面详细介绍Linux下FTP的使用方法。

linux如何使用ftp

FTP服务端安装与配置(以vsftpd为例)

vsftpd(Very Secure FTP Daemon)是Linux下常用的FTP服务端软件,因其安全性高、配置简单而被广泛使用。

安装vsftpd

以Debian/Ubuntu系统为例,使用apt安装:

sudo apt update
sudo apt install vsftpd

以CentOS/RHEL系统为例,使用yum安装:

sudo yum install vsftpd

配置vsftpd

安装完成后,配置文件位于/etc/vsftpd.conf,可通过修改该文件实现功能控制,以下是关键配置项及说明:

配置项 默认值 说明
anonymous_enable NO 是否允许匿名用户登录,建议关闭(安全)
local_enable YES 是否允许本地用户登录
write_enable YES 是否允许本地用户上传/修改文件
chroot_local_user NO 是否将本地用户限制在其家目录内(防止越权访问)
pasv_enable YES 是否启用被动模式(推荐开启,避免防火墙问题)
pasv_min_port 60000 被动模式最小端口
pasv_max_port 60000 被动模式最大端口(需与防火墙放行端口范围一致)
userlist_enable YES 是否启用用户列表(/etc/vsftpd.user_list控制允许/拒绝的用户)

示例配置(允许本地用户登录,限制在家目录,启用被动模式):

sudo nano /etc/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
pasv_enable=YES
pasv_min_port=60000
pasv_max_port=60100
allow_writeable_chroot=YES  # 解决chroot后无法写入的问题(vsftpd 3.0+需添加)

创建FTP用户并设置权限

假设创建一个名为ftpuser的用户,家目录为/home/ftpuser:

linux如何使用ftp

sudo useradd -m -d /home/ftpuser -s /sbin/nologin ftpuser  # 创建用户,禁止SSH登录
sudo passwd ftpuser  # 设置用户密码

若需限制用户仅能通过FTP访问,可将其加入/etc/vsftpd.user_list文件:

echo "ftpuser" | sudo tee -a /etc/vsftpd.user_list

启动并设置开机自启

sudo systemctl start vsftpd
sudo systemctl enable vsftpd

防火墙配置

开放FTP相关端口(21控制端口,被动模式数据端口60000-60100):

sudo ufw allow 21/tcp
sudo ufw allow 60000:60100/tcp
sudo ufw reload

FTP客户端连接与操作

Linux下常用的FTP客户端命令工具有ftp(基础工具)和lftp(增强工具,支持多线程、断点续传等)。

使用ftp命令连接服务端

ftp ftp服务器IP或域名

例如连接本地服务端:

ftp 127.0.0.1

输入用户名和密码后登录成功,进入FTP命令行界面。

ftp常用命令

命令 功能 示例
ls 列出当前目录文件 ls
cd 目录名 切换目录 cd /home/ftpuser/upload
get 文件名 下载文件到本地 get test.txt
put 文件名 上传本地文件到服务端 put local.txt
mget 文件名 批量下载文件(支持通配符) mget *.txt
mput 文件名 批量上传文件 mput *.log
pwd 显示当前服务端目录 pwd
! 命令 执行本地系统命令 ! ls /tmp
bye 退出FTP连接 bye

示例操作:

linux如何使用ftp

ftp> 192.168.1.100  # 连接服务端
Name: (none): ftpuser  # 输入用户名
331 Please specify the password.
Password:  # 输入密码(不显示)
230 Login successful.
ftp> pwd  # 查看当前目录
257 "/home/ftpuser" is current directory.
ftp> lcd /tmp  # 切换本地工作目录
Local directory now /tmp
ftp> put test.txt  # 上传本地test.txt到服务端
local: test.txt remote: test.txt
226 Transfer complete.
ftp> get remote.txt  # 下载服务端remote.txt到本地
local: remote.txt remote: remote.txt
226 Transfer complete.
ftp> bye
221 Goodbye.

使用lftp(推荐)

lftp功能更强大,支持自动重连、断点续传、多线程传输等,安装方式:

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

连接与操作示例:

lftp ftpuser@192.168.1.100  # 直接通过命令行登录
lftp ftpuser@192.168.1.100:~> ls  # 列出服务端目录
lftp ftpuser@192.168.1.100:~> lcd /home/user  # 切换本地目录
lftp ftpuser@192.168.1.100:~> put large_file.zip  # 上传(支持断点续传:-c)
lftp ftpuser@192.168.1.100:~> mirror -R /local/dir /remote/dir  # 本地目录同步到服务端(-R表示反向)
lftp ftpuser@192.168.1.100:~> bye  # 退出

安全注意事项

  1. 避免明文传输:FTP默认使用明文传输用户名和密码,数据易被窃听,建议使用FTPS(FTP over SSL/TLS)或SFTP(基于SSH的文件传输,非FTP协议)替代。
    • 配置FTPS:在vsftpd.conf中添加ssl_enable=YES、force_local_data_ssl=YES等,并配置SSL证书。
  2. 限制用户权限:通过chroot_local_user限制用户在家目录,避免越权访问系统文件。
  3. 禁用匿名登录:确保anonymous_enable=NO,防止恶意用户通过匿名账号上传恶意文件。

相关问答FAQs

Q1: Linux下FTP连接失败,提示“Connection refused”怎么办?
A1: 主要检查以下三点:

  1. 服务端是否启动:运行sudo systemctl status vsftpd,若未启动则执行sudo systemctl start vsftpd。
  2. 防火墙是否拦截端口:确认21(控制端口)和被动模式数据端口(如60000-60100)已放行,可通过sudo ufw status查看。
  3. 服务端配置是否正确:检查/etc/vsftpd.conf中listen=YES(若为IPv4)或listen_ipv6=YES(若为IPv6),确保服务监听状态正常。

Q2: FTP和SFTP有什么区别?如何选择?
A2:

  • 协议基础:FTP是独立的文件传输协议(端口21),SFTP是基于SSH协议的文件传输(端口22),属于SSH的一部分。
  • 安全性:FTP传输数据为明文,易被窃听;SFTP通过SSH加密传输,安全性更高。
  • 功能:FTP支持主动/被动模式,适合大文件传输;SFTP支持目录同步、权限控制(基于Linux用户权限),更适合需要加密的场景。
  • 选择建议:若传输敏感数据(如密码、配置文件),优先使用SFTP;若仅需普通文件传输且网络环境安全,可使用FTP。

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

赞 (0)
酷番叔酷番叔
上一篇 2025年9月30日 09:43
下一篇 2025年9月30日 10:00

相关推荐

  • 如何使用Linux命令查看文本文件的行号?具体操作步骤和命令有哪些?

    在Linux系统中,查看文件行号是一项基础且常用的操作,无论是编程调试、日志分析还是文本编辑,行号都能帮助快速定位内容,本文将详细介绍多种查看Linux行号的方法,涵盖命令行工具、文本编辑器及图形化界面,并总结不同场景下的适用技巧,命令行工具查看行号命令行是Linux环境下最直接的操作方式,通过特定命令可快速显……

    2025年9月22日
    22900
  • 如何安全重启Linux系统?

    重启前的关键准备保存所有工作关闭所有应用程序(如文档、代码编辑器),避免数据丢失,通知在线用户(针对服务器)通过 wall 命令广播通知: echo "系统将在5分钟后重启,请保存工作!" | wall检查关键服务确认无关键任务运行(如数据库写入、备份):systemctl list-uni……

    2025年7月13日
    29500
  • Linux如何高效搜索文件夹?

    命令行工具(最常用且强大)find 命令(精准搜索)功能:递归搜索目录树,支持名称、类型、时间等过滤,基础语法:find [搜索路径] [选项] [表达式]常用示例:按名称搜索(区分大小写): find /home -type d -name "Documents" # 在/home下搜索名……

    2025年7月16日
    40500
  • 如何检查iptables防火墙规则状态?

    在Linux系统中,防火墙是保护系统安全的核心组件,不同发行版可能使用不同的防火墙管理工具,因此查看防火墙状态的方法也各有差异,以下将详细介绍主流防火墙工具的查看方法,操作前请确保您拥有管理员权限(使用sudo),并谨慎执行命令以避免误操作,iptables 是传统的Linux防火墙工具,适用于CentOS 6……

    2025年7月7日
    34600
  • Linux如何安全挂载U盘/移动硬盘?

    挂载前的准备工作连接设备并识别插入设备后,使用以下命令查看设备标识符: sudo fdisk -l # 列出所有磁盘及分区sudo lsblk # 以树形结构查看块设备输出示例: sdb 8:16 1 14.9G 0 disk└─sdb1 8:17 1 14.9G 0 part # 设备名通常为 /dev/sd……

    2025年8月4日
    34300

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信