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=YESforce_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.conflisten=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系统中,软件安装方式因发行版的不同而有所差异,这主要源于各发行版采用的包管理器和包格式不同,常见的安装包类型包括.deb(Debian/Ubuntu)、.rpm(RedHat/CentOS/Fedora)、.pkg.tar.xz(Arch)等,对应的包管理器也有dpkg、rpm、pacman等,还有……

    2025年9月9日
    18500
  • Windows如何实现远程连接Linux?详细步骤与工具有哪些方法?

    在Windows系统中远程连接Linux服务器或主机是日常开发和运维中的常见需求,无论是管理服务器、调试代码还是传输文件,掌握正确的远程方法都能大幅提升工作效率,本文将详细介绍Windows远程Linux的几种主流方式,包括SSH(命令行)、VNC(图形界面)和RDP(远程桌面协议),涵盖环境准备、具体操作步骤……

    2025年9月28日
    31600
  • Linux操作系统中如何隐藏文件或文件夹?

    在Linux操作系统中,隐藏文件是一种常见的文件管理方式,主要用于存放系统配置、临时数据或用户个人隐私文件,避免在常规文件列表中显示,减少误操作风险,Linux中隐藏文件的判定标准很简单:以英文句点(.)开头的文件或目录即为隐藏文件,例如.bashrc、.config等,本文将详细介绍Linux中隐藏文件的相关……

    2025年8月30日
    23000
  • RedHat Linux如何设置双屏显示?

    在Redhat Linux系统中设置双屏显示,可以有效提升工作效率,无论是多任务处理、编程开发还是演示展示,双屏都能提供更广阔的操作空间,本文将详细介绍从硬件准备到软件配置的全过程,涵盖驱动安装、命令行与图形界面配置方法,以及常见问题解决方案,帮助用户顺利完成双屏设置,硬件准备与基础检测在开始配置前,确保硬件连……

    2025年8月25日
    19800
  • Linux中调用so库的具体步骤和常见问题有哪些?

    在 Linux 系统中,动态链接库(.so 文件)是实现代码模块化和资源共享的重要方式,与静态库(.a 文件)不同,动态库在程序运行时才被加载到内存,多个程序可共享同一份库文件,节省存储空间并便于更新,调用 so 库主要分为编译时链接和运行时加载两种方式,本文将详细介绍具体操作步骤及注意事项,创建 so 动态库……

    2025年9月13日
    15300

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信