简单文件传输协议 (TFTP) 是标准 FTP 的轻量级替代方案,用于在联网设备之间传输文件。与 FTP 和 HTTP 相比,TFTP 更简单,并且操作起来没有客户端-服务器模型中通常具有的任何复杂性。这就是为什么该协议执行基本文件传输的原因,例如将配置文件和固件更新传输到路由器、交换机和电话等网络设备。TFTP 使用 UDP(用户数据报协议)作为其传输层,使其速度更快但可靠性较差。
TFTP 仅支持读取 (RRQ)、写入 (WRQ) 和确认 (ACK) 等基本命令。它还缺少目录列表、用户身份验证和文件权限管理等功能。
TFTP 的常见用例
- 网络启动和固件升级
- 用于网络管理系统传输日志、监控数据或配置文件
- 在嵌入式系统中很有用
- 非常适合隔离或受控网络内的文件传输
TFTP 的局限性
- 它不支持目录列表、用户身份验证、
- 缺乏安全性:缺乏加密和身份验证
- 不稳定的网络不可靠
- 固定 512 字节块大小;因此,它不适合发送大文件
我们需要做什么才能完成本教程?
- Ubuntu 24.04 系统或更早版本,例如 Ubuntu 20.04、22.04 或 23.04。
- 具有 sudo 访问权限的用户
- 要下载包,需要稳定的互联网连接。
如果没有Ubuntu服务器,可以考虑雨云服务器,1元即可试用,多种操作系统安装,新手注册绑定微信就送5折优惠码。
步骤 1:查看 Ubuntu 24.04 软件包列表
在您的 Ubuntu 系统上,访问命令终端并运行给定的 APT 命令来更新软件包列表并获取已安装软件包的最新版本。
sudo apt update && sudo apt upgrade
步骤2:安装TFTP服务器和客户端
现在,我们使用 Ubuntu 24.04 默认系统存储库来安装可用的 TFTP 服务器和客户端包,而无需添加任何外部存储库。
sudo apt install tftpd-hpa tftp-hpa
步骤 3:创建目录来存储文件
让我们创建一个目录来保存我们需要使用 TFTP 服务器上传或下载的文件。以下是目录运行所需的命令和权限。
创建目录:
sudo mkdir -p /var/lib/tftpboot
设置权限:
sudo chown -R nobody:nogroup /var/lib/tftpboot
sudo chmod -R 777 /var/lib/tftpboot
现在,想要上传或下载的任何内容都应保存在“/var/lib/tftpboot”下。
步骤3:配置TFTP服务器
一旦服务器和客户端的安装以及目录完成,让我们编辑 TFTP 服务器配置文件以添加或更改配置,如下所示:
打开配置文件:
sudo nano /etc/default/tftpd-hpa
编辑配置文件:
复制或替换现有配置,或者按如下所示进行修改以匹配以下配置:
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure"
TFTP_OPTIONS="-l -c -s"
保存并关闭文件:
按 CTRL + X,然后按 Y 和 Enter 保存更改并退出文本编辑器。
步骤4:重新启动TFTP服务器
要应用我们迄今为止所做的更改,请使用给定的命令重新启动 TFTP 服务器:
sudo systemctl restart tftpd-hpa
还可以启用该服务在启动时自动启动:
sudo systemctl enable tftpd-hpa
步骤5:上传或下载文件。
现在,我们可以测试创建的 TFTP 服务器,以便从运行在 Ubuntu 24.04 Linux 上的 TFTP 服务器上传或下载文件。首先,在您要用于连接 TFTP 服务器的本地 Linux 计算机上安装 TFTP 客户端:
sudo apt install tftp-hpa
之后,连接 TFTP 服务器。例如,我们的 Ubuntu 24.04 IP 地址是192.168.1.15,因此要连接它,命令将是:
tftp ip-address
建立连接后,我们可以使用以下命令检查服务器的状态:
status
然而,如果您想查看在 TFTP 中执行命令时发生的情况,我们可以通过输入以下命令启用“Verbose” :
verbose
要从远程 TFTP 服务器下载文件,请使用:
get myfile
例子:
get test.php
要使用客户端从本地 PC 将文件上传或推送到远程 TFTP 服务器:
put myfile
例子:
put demo.php
在Ubuntu上设置 TFTP 很简单,我们已经看到了这一点;但是,TFTP 仅适用于需要轻量级文件传输的环境。因此,它在网络设备配置和PXE启动中很有用。