怎么在Linux服务器上使用FTP?

我会为你详细讲解这两个方面。

第一部分:作为客户端(使用 FTP 命令连接其他服务器)

Linux 系统通常自带一个基本的 FTP 命令行客户端工具,叫做ftp

安装客户端(如果尚未安装)

通常系统已自带,如果没有,可以使用包管理器安装:

Ubuntu/Debian:

  sudo apt update && sudo apt install ftp

CentOS/RHEL/Fedora:

  sudo yum install ftp      # CentOS 7 或更早
  sudo dnf install ftp      # CentOS 8 / Fedora

基本连接和使用

基本连接语法
ftp [选项] [主机名或IP地址] [端口]
示例:连接到一个 FTP 服务器 (默认端口 21)
ftp 192.168.1.100

执行命令后,它会提示你输入用户名和密码。

常用 FTP 客户端命令

连接成功后,你会进入ftp> 提示符,以下是一些最常用的命令:

命令 全称 作用
ls List 列出服务器上当前目录的文件
cd [目录名] Change Directory 切换服务器上的目录
lcd [目录名] Local Change Directory 切换本地机器的目录
get [文件名] Get 从服务器下载一个文件到本地当前目录
mget [文件名模式] Multiple Get 使用通配符(如下载多个文件
put [文件名] Put 从本地上传一个文件到服务器
mput [文件名模式] Multiple Put 使用通配符上传多个文件
binary 设置传输模式为二进制(用于传输图片、压缩包、程序等)
ascii 设置传输模式为文本(用于传输纯文本文件)
passive /pass 切换被动模式(PASV),用于解决某些防火墙后的连接问题
bye /quit 断开连接并退出 FTP 客户端
! 临时跳出到本地 Shell(输入exit 返回 FTP)
help [命令] 查看所有命令或某个特定命令的帮助

示例操作流程:

$ ftp 192.168.1.100
Connected to 192.168.1.100.
Name (192.168.1.100:user): your_username  # 输入用户名
331 Please specify the password.
Password:                                 # 输入密码(不显示)
230 Login successful.
ftp> ls                                  # 查看服务器文件
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x    2 0        0            4096 Apr 10 10:00 downloads
-rw-r--r--    1 0        0         1234567 Apr 10 09:30 file.zip
226 Directory send OK.
ftp> binary                             # 设置为二进制模式,准备下载压缩包
200 Switching to Binary mode.
ftp> get file.zip                       # 下载 file.zip 文件
local: file.zip remote: file.zip
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for file.zip (1234567 bytes).
226 Transfer complete.
1234567 bytes received in 0.5 secs (2469.134 kB/s)
ftp> put local_file.txt                 # 上传一个本地文件
ftp> bye                                # 退出
221 Goodbye.

第二部分:作为服务器端(搭建 FTP 服务)

在 Linux 上搭建 FTP 服务器,最常用、最易用的软件是vsftpd (Very Secure FTP Daemon)。

安装 vsftpd

Ubuntu/Debian:

  sudo apt update
  sudo apt install vsftpd

CentOS/RHEL:

  sudo yum install vsftpd    # CentOS 7
  sudo dnf install vsftpd    # CentOS 8 / Fedora

启动并设置开机自启

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

配置 vsftpd

主配置文件位于/etc/vsftpd.conf,修改前务必先备份

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.backup  # 备份
sudo nano /etc/vsftpd.conf                        # 使用 nano 编辑器修改

以下是一些常见且重要的配置选项(找到并修改或取消注释):

禁止匿名用户登录(提高安全性)
anonymous_enable=NO
允许本地系统用户登录
local_enable=YES
允许用户有写权限(上传、删除等)
write_enable=YES
设置本地用户创建文件时的默认掩码(权限)
022 表示新创建的文件权限为 644,文件夹为 755
local_umask=022
有些客户端需要这个选项来正常工作
allow_writeable_chroot=YES
启用被动模式(PASV)设置,这对通过防火墙的客户端很重要
pasv_enable=YES
pasv_min_port=30000              # 被动模式端口范围下限
pasv_max_port=31000              # 被动模式端口范围上限
如果你的服务器在 NAT/防火墙后,需要设置为你服务器的公网IP
pasv_address=你的公网IP地址

4. 创建 FTP 专用用户(推荐,更安全)

不建议直接使用 root 用户,创建一个新用户专门用于 FTP:

创建一个系统用户,并指定其家目录(/var/ftp/user1)
sudo useradd -m -d /var/ftp/user1 -s /bin/bash user1
sudo passwd user1  # 为 user1 设置一个强密码
禁止该用户通过 SSH 登录,只允许 FTP,增加安全性
sudo usermod -s /usr/sbin/nologin user1
确保该用户对其家目录有写权限
sudo chown -R user1:user1 /var/ftp/user1

放行防火墙

如果你的服务器开启了防火墙(如ufwfirewalld),需要放行 FTP 端口。

放行端口 21 (命令通道) 和 30000-31000 (被动模式数据通道)

使用 ufw (Ubuntu):

  sudo ufw allow 20/tcp
  sudo ufw allow 21/tcp
  sudo ufw allow 30000:31000/tcp
  sudo ufw reload

使用 firewalld (CentOS/RHEL):

  sudo firewall-cmd --permanent --add-port=20-21/tcp
  sudo firewall-cmd --permanent --add-port=30000-31000/tcp
  sudo firewall-cmd --reload

重启 vsftpd 使配置生效

sudo systemctl restart vsftpd

你就可以使用任何 FTP 客户端(如 FileZilla, WinSCP,或上面介绍的命令行工具)来连接你的 Linux FTP 服务器了。

**重要安全提醒

1、FTP 是不安全的协议:它使用明文传输用户名、密码和数据,极易被窃听。

2、强烈建议:在公网或生产环境中,不要使用传统的 FTP

3、替代方案

SFTP (SSH File Transfer Protocol)基于 SSH,加密所有传输内容,Linux 服务器只要开启了 SSH 服务(默认都开启),就天然支持 SFTP。这是最简单、最安全的替代方案,使用时,客户端选择SFTP 协议,使用 SSH 用户名和密码即可。

FTPS (FTP over SSL/TLS)为 FTP 添加 SSL/TLS 加密层,vsftpd 也支持此功能,但配置比 SFTP 复杂。

对于个人或内部网络,可以使用 FTP 方便地传输文件,但在互联网上,请务必使用 SFTP 或 FTPS 来保证安全。

文章摘自:https://idc.huochengrm.cn/fwq/13819.html

评论