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 2020端口如何开

    Linux 2020系统中,可通过防火墙配置命令(如firewall-cmd

    2025年8月14日
    11900
  • 虚拟机中Linux系统如何全屏显示?

    在虚拟机中运行Linux系统时,全屏操作能有效提升操作体验,减少窗口边框的干扰,更接近真实系统的使用感受,不同虚拟机软件(如VMware、VirtualBox、Hyper-V等)的全屏操作方法略有差异,同时部分场景下需安装增强工具(或虚拟机工具)以优化全屏效果,本文将详细讲解主流虚拟机中Linux系统的全屏操作……

    2025年10月8日
    8500
  • Linux下如何解压7z格式文件?

    在Linux系统中处理7z格式的压缩文件,需要使用专门的解压工具,因为Linux默认并未内置对7z格式的支持,7z是一种高压缩率的压缩格式,常用于节省存储空间或加快文件传输速度,其工具主要由p7zip软件包提供,以下将详细介绍在Linux下解压7z文件的完整流程,包括工具安装、常用命令、参数选项及常见问题处理……

    2025年10月7日
    7900
  • rsh服务运行状态如何检查?

    在Linux系统中,rsh(Remote Shell)是一种历史悠久的远程登录协议,但由于其明文传输数据且缺乏加密机制,存在严重的安全风险(如密码嗅探、中间人攻击),现代Linux环境强烈建议关闭rsh服务,并改用更安全的SSH协议,以下是详细操作步骤:检查rsh服务状态在关闭前,确认系统是否启用了rsh相关服……

    2025年6月23日
    13700
  • Linux系统如何截屏?具体操作步骤和快捷键有哪些?

    在Linux系统中,截屏操作有多种实现方式,涵盖图形界面工具、命令行工具以及不同桌面环境自带的功能,用户可根据需求选择适合的方法,本文将详细介绍Linux下截屏的各类方法,包括工具使用、快捷键操作及高级技巧,帮助用户高效完成截图任务,图形界面截图工具(适合新手用户)图形界面工具通常操作直观,支持即时预览和简单编……

    2025年9月15日
    11200

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信