

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# `ftp` 程序包
<a name="ftp-package-exclusion"></a>

从 AL2023 开始，AL2 中的 `ftp` 程序包在 Amazon Linux 中不再提供。此决定是我们对安全性、可维护性和现代软件开发实践持续承诺的一部分。在迁移至 AL2023 的过程中（或之前），我们建议将任何对传统 `ftp` 程序包的使用迁移至其替代方案之一。

## 背景
<a name="ftp-package-background"></a>

传统的 `ftp` 程序包在上游已多年未得到积极维护。其源代码的最后一次重要更新发生在 2000 年代初期，且原始源代码存储库已不可用。尽管一些 Linux 发行版提供了安全漏洞补丁，但该代码库基本上仍处于无人维护状态。

## 建议的替代方案
<a name="ftp-package-alternatives"></a>

AL2023 为 FTP 功能提供了几种现代的、积极维护的替代方案：

`lftp`（在 AL2 和 AL2023 中可用）  
一个复杂的文件传输功能程序，支持 FTP、HTTP、SFTP 和其他协议。它比传统的 `ftp` 客户端提供更多功能，并且得到积极维护。  
安装命令：**dnf install lftp**。

`curl`（在 AL2 和 AL2023 中可用）  
一个多功能命令行工具，用于通过 URL 传输数据，支持 FTP、FTPS、HTTP、HTTPS 和许多其他协议。  
在 AL2023 中通过 `curl-minimal` 程序包默认提供。如需更广泛的协议支持，可选择使用 `curl-full` 升级至 **dnf swap curl-minimal curl-full**。

`wget`（在 AL2 和 AL2023 中可用）  
一个用于从网络下载文件的非交互式命令行实用程序，支持 HTTP、HTTPS 和 FTP 协议。  
安装命令：**dnf install wget**（未在所有 AL2023 映像中默认安装）

`sftp`（在 AL2 和 AL2023 中可用）  
一种通过 SSH 运行的安全文件传输功能协议，提供加密的文件传输。  
作为 OpenSSH 程序包的组成部分默认提供。

## 迁移注意事项
<a name="ftp-package-migration"></a>

如果您的应用程序或脚本依赖传统的 `ftp` 客户端，请考虑以下迁移方法：

1. **更新脚本以使用现代替代方案**：修改您的脚本以使用 `lftp`、`curl`、`wget`、或 `sftp` 替代传统的 `ftp` 客户端。

1. **检查程序包依赖关系**：某些应用程序可能在其程序包元数据中将 `ftp` 程序包列为依赖项，即使它们内部早已迁移使用现代协议。在这些情况下，即使缺少 `ftp` 程序包中的 `/usr/bin/ftp`，应用程序仍可能在 AL2023 上正常运行。请检查应用程序的实际要求，而非仅依赖声明的依赖关系。

1. **更新应用程序依赖关系**：对于您维护的仍声明依赖 `ftp` 程序包但实际并未使用的应用程序，请更新程序包元数据以移除此不必要的依赖项。

## 安全考虑因素
<a name="ftp-package-security"></a>

FTP 协议以明文形式传输数据，包括身份验证凭证。对于安全敏感型应用程序，我们强烈建议使用加密替代方案（例如 SFTP 或 HTTPS），这些方案均受推荐替代工具的支持。