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装XP,虚拟机还是双系统更轻松?

    虚拟机安装(安全推荐)通过虚拟化软件(如VirtualBox)在Linux中模拟XP环境,不破坏原有系统,步骤:安装VirtualBoxsudo apt update && sudo apt install virtualbox # Debian/Ubuntusudo dnf install V……

    2025年7月5日
    5700
  • Linux删除目录如何避免数据丢失?

    删除空目录(无文件/子目录)使用 rmdir 命令(安全且专用于空目录):rmdir 目录名示例:删除空目录 mydir:rmdir mydir结果:若目录非空,将提示 目录非空 错误;仅当目录为空时删除成功,删除非空目录(含文件/子目录)使用 rm -r 命令(递归删除):rm -r 目录名关键参数:-r 或……

    2025年7月7日
    4900
  • 工作效率翻倍?必备快捷键!

    在Linux系统中,工作区(Workspace)是提升多任务效率的核心功能,它允许用户将不同应用分散到多个虚拟桌面,避免窗口杂乱,以下详细介绍切换工作区的多种方法,涵盖主流桌面环境和进阶技巧,所有操作均基于最新Linux发行版(如Ubuntu 22.04、Fedora 36),不同桌面环境默认快捷键略有差异,但……

    2025年7月2日
    5400
  • Linux移动文件夹怎样操作更安全高效?

    在Linux中,使用mv命令移动文件夹,操作前确认目标路径存在,使用-i选项避免覆盖,-v查看详情,注意权限要求,移动系统或重要目录前建议备份。

    2025年7月16日
    4400
  • linux如何连接局域网ip

    Linux 中,可通过命令 ping [目标 IP]测试连通性,用 `ssh [用户名]

    2025年8月15日
    3600

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信