tftpd-hpa是Ubuntu/Debian下轻量稳定、专为嵌入式设备优化的TFTP服务,安装后配置/etc/default/tftpd-hpa启用--secure --create -l -v选项,设目录/var/lib/tftpboot并赋权777,通过systemctl管理服务,防火墙仅放行可信网段UDP 69端口。

直接用 tftpd-hpa 就行,它轻量、稳定、日志清晰,专为嵌入式和网络设备场景优化,不用折腾 xinetd 或 atftpd。
安装与基础服务部署
在 Ubuntu/Debian 系统上执行:
- 更新并安装服务端(客户端可选,用于本地测试):
sudo apt update && sudo apt install tftpd-hpa tftp-hpa - 确保没其他 TFTP 服务冲突:
dpkg -l | grep tftp,如有残留先卸载 - 创建共享目录并设权限(开发阶段允许上传,故用 777):
sudo mkdir -p /var/lib/tftpboot && sudo chmod 777 /var/lib/tftpboot && sudo chown -R tftp:tftp /var/lib/tftpboot
关键配置项详解
编辑 /etc/default/tftpd-hpa,内容建议如下:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- TFTP_USERNAME="tftp" —— 使用专用系统用户,避免 root 权限
- TFTP_DIRECTORY="/var/lib/tftpboot" —— 保持默认路径,减少路径错误
- TFTP_ADDRESS=":69" —— 绑定所有接口的 UDP 69 端口(如需限定 IP,写成 192.168.1.100:69)
-
TFTP_OPTIONS="--secure --create -l -v":
• --secure:禁止跳出指定目录,防路径遍历
• --create:允许客户端上传固件(升级时必需)
• -l -v:启用系统日志并输出详细操作,方便排障
启动服务与网络放行
完成配置后立即生效:
- 重启并设开机自启:
sudo systemctl restart tftpd-hpa && sudo systemctl enable tftpd-hpa - 确认服务运行正常:
sudo systemctl status tftpd-hpa(应显示 active)
sudo netstat -anu | grep :69(应看到 udp *:69 监听) - 开放防火墙(以 firewalld 为例):
sudo firewall-cmd --permanent --add-port=69/udp && sudo firewall-cmd --reload
固件传输实操要点
把固件文件(如 router_v2.4.1.bin)复制到 /var/lib/tftpboot 后,设备端即可拉取:
- 交换机或路由器 CLI 示例(华为/H3C 常见):
tftp 192.168.1.100 get router_v2.4.1.bin - U-Boot 下升级内核镜像:
tftp 0x82000000 uImage(地址依平台而定) - 上传配置备份(需服务端开启 --create):
设备端执行 tftp 192.168.1.100 put startup.cfg,文件将落进 tftpboot 目录
注意:TFTP 无加密、无认证,务必限制访问源——用防火墙只允许可信网段(如 192.168.1.0/24),生产环境禁用公网暴露。

















