TFTP(Trivial File Transfer Protocol,简单文件传输协议)是一种基于UDP 69端口工作的轻量级文件传输协议。与FTP不同,它没有用户认证、目录浏览等复杂功能,正因如此它结构简单、开销极小,被广泛应用于PXE网络启动、网络设备固件备份与升级、嵌入式系统内核加载等场景。本文将以Debian系统为例,完整讲解TFTP服务器的安装、配置、测试与故障排查全过程。

一、安装TFTP服务软件包
在Debian的软件源中,常用的TFTP服务端软件主要有tftpd-hpa和atftpd两种。其中tftpd-hpa是HP公司维护的版本,配置简单、稳定可靠,是目前Debian和Ubuntu体系下的主流选择,推荐优先使用。
执行以下命令更新软件源并安装服务端与客户端:
sudo apt update sudo apt install tftpd-hpa tftp-hpa -y
安装过程中,系统会弹出对话框询问TFTP根目录,默认值为/srv/tftp,可以直接确认保留默认值,后续也可以在配置文件中手动修改。安装完成后,服务会自动注册为systemd服务,名称为tftpd-hpa.service,可以使用以下命令查看运行状态:
sudo systemctl status tftpd-hpa
如果显示active (running),说明服务已经正常启动。如果没有运行,可以手动执行sudo systemctl start tftpd-hpa启动服务,并建议执行sudo systemctl enable tftpd-hpa将其设为开机自启,避免服务器重启后服务丢失。
二、配置TFTP服务器参数与目录权限
TFTP服务端的核心配置文件位于/etc/default/tftpd-hpa,使用任意编辑器打开即可修改,例如:
sudo vim /etc/default/tftpd-hpa
一个典型且实用的配置内容如下:
TFTP_USERNAME="tftp" TFTP_DIRECTORY="/srv/tftp" TFTP_ADDRESS=":69" TFTP_OPTIONS="--secure -c create -v"
下面对各参数逐一说明。TFTP_USERNAME指定服务运行时使用的系统用户,默认为tftp,该用户在安装软件包时自动创建。TFTP_DIRECTORY是TFTP服务的根目录,所有文件的上传下载都限制在该目录内。TFTP_ADDRESS指定监听地址与端口,冒号加69表示在本机所有网卡的69端口监听。TFTP_OPTIONS中的--secure表示启动后自动切换到根目录,增强安全性;-c create允许客户端创建新文件,也就是允许上传新文件;-v开启详细日志,便于排查问题。
配置完成后,必须正确设置根目录的属主和权限,否则会出现文件传输权限拒绝的问题。由于服务以tftp用户身份运行,目录需要归tftp用户所有:
sudo mkdir -p /srv/tftp sudo chown -R tftp:tftp /srv/tftp sudo chmod -R 755 /srv/tftp
修改配置文件后,需要重启服务使其生效:
sudo systemctl restart tftpd-hpa sudo systemctl status tftpd-hpa
如果使用了防火墙(如ufw或iptables),还需要放行UDP 69端口,同时TFTP数据传输还会使用动态分配的高位端口,建议在测试阶段先临时关闭防火墙验证,确认服务正常后再针对性放行规则:
sudo ufw allow 69/udp sudo ufw status
三、测试TFTP服务与常见故障排查
服务搭建完成后,先在服务器本地创建一个测试文件,然后用tftp-hpa客户端验证下载功能:
echo "hello tftp" | sudo tee /srv/tftp/test.txt tftp 127.0.0.1 tftp> get test.txt tftp> quit cat test.txt
如果能在当前目录看到下载下来的test.txt文件并输出hello tftp内容,说明服务端工作正常。接下来可以在局域网内的另一台机器上执行相同操作做远程验证。上传测试可以使用put命令:
tftp 192.168.1.100 tftp> put localfile.txt tftp> quit
实际使用中经常遇到几类典型问题。第一类是连接超时或无响应,多数原因是服务未启动、防火墙拦截或监听地址配置错误,可通过ss -ulnp | grep 69确认端口监听情况,同时检查服务端与客户端之间的网络连通性。
第二类是下载文件时提示Error code 1: File not found,这通常是文件路径问题。TFTP协议没有目录浏览功能,客户端只能访问根目录下的绝对路径文件,且文件权限需要保证其他用户可读。第三类是上传文件时提示Error code 2: Access violation,常见原因包括配置文件中缺少-c create选项导致无法新建文件,或者根目录属主不是tftp用户导致写入失败,按前文方法修正属主和选项后重启服务即可解决。
排查问题时,日志是最有力的工具。tftpd-hpa默认将日志输出到系统日志,可以实时查看:
sudo journalctl -u tftpd-hpa -f
配合配置中的-v详细日志选项,每一次连接请求、文件读写操作都会被记录下来,定位问题非常高效。如果用于PXE启动场景,还需注意SELinux或AppArmor对服务访问目录的限制,Debian下可以执行sudo aa-status查看AppArmor状态,必要时调整对应的安全配置文件。
总体来说,Debian下搭建TFTP服务器的核心要点有三个:正确的配置文件参数、合理的目录属主权限、通畅的网络与防火墙规则。只要这三点都处理到位,再结合日志进行排查,就能获得一个稳定可靠的TFTP文件传输环境,满足固件升级、PXE部署、嵌入式开发等各类实际需求。
DebianTFTP服务器tftpd-hpa配置修改时间:2026-08-31 02:42:35