Linux 下安装与配置 TFTP 服务器教程(2026 年最新)
TFTP(Trivial File Transfer Protocol,简单文件传输协议)是一种轻量级协议,使用 UDP 69 端口,主要用于局域网内小文件传输(如网络设备固件升级、PXE 网络启动)。它没有认证机制,安全性较低,强烈建议仅在局域网内使用,并结合防火墙限制访问。
以下教程覆盖主流发行版:Ubuntu/Debian(使用 tftpd-hpa)和CentOS/RHEL/Rocky/AlmaLinux(使用 tftp-server)。步骤亲测基于最新版本(Ubuntu 24.04、RHEL 9+)。
1. Ubuntu/Debian 系统(推荐 tftpd-hpa)
安装
sudoaptupdatesudoaptinstalltftpd-hpa# 服务器sudoaptinstalltftp-hpa# 客户端(可选,用于测试)配置
- 默认共享目录:
/var/lib/tftpboot(或/srv/tftp)
sudomkdir-p/var/lib/tftpbootsudochmod777/var/lib/tftpboot# 允许读写(生产环境慎用,建议 755)sudochown-Rtftp:tftp /var/lib/tftpboot# 所有者设为 tftp 用户- 编辑配置文件
/etc/default/tftpd-hpa:
sudonano/etc/default/tftpd-hpa内容修改为(关键选项解释):
TFTP_USERNAME="tftp" TFTP_DIRECTORY="/var/lib/tftpboot" # 共享目录 TFTP_ADDRESS=":69" # 监听端口 TFTP_OPTIONS="--secure --create -l -v" # --secure: 限制在目录内 # --create: 允许上传新文件 # -l: 独立模式,-v: 详细日志启动与开机自启
sudosystemctl restart tftpd-hpasudosystemctlenabletftpd-hpasudosystemctl status tftpd-hpa# 检查运行状态2. CentOS/RHEL/Rocky/AlmaLinux 系统
安装
sudodnf update# 或 yum update(旧版)sudodnfinstalltftp-server tftp# 服务器 + 客户端sudodnfinstallxinetd# 如果未安装(部分旧版需)配置
- 默认共享目录:
/var/lib/tftpboot
sudomkdir-p/var/lib/tftpbootsudochmod755/var/lib/tftpbootsudochown-Rnobody:nobody /var/lib/tftpboot# 安全所有者- TFTP 通过 systemd socket 激活,或 xinetd(旧版)。
- 修改 systemd 服务(推荐现代方式):
sudocp/usr/lib/systemd/system/tftp.service /etc/systemd/system/tftp-server.servicesudocp/usr/lib/systemd/system/tftp.socket /etc/systemd/system/tftp-server.socketsudonano/etc/systemd/system/tftp-server.service修改 ExecStart 行:
ExecStart=/usr/sbin/in.tftpd -s /var/lib/tftpboot -c --secure # -s: chroot 到目录,-c: 允许创建文件,--secure: 安全模式- 重新加载:
sudosystemctl daemon-reload启动与开机自启
sudosystemctl start tftp.socketsudosystemctlenabletftp.socket tftp.servicesudosystemctl status tftp# 检查3. 防火墙配置(所有系统必做)
TFTP 使用 UDP 69 端口:
- Ubuntu(ufw):
sudoufw allow69/udpsudoufw reload- CentOS/RHEL(firewalld):
sudofirewall-cmd--permanent--add-service=tftpsudofirewall-cmd--reload4. 测试 TFTP 服务器
- 在服务器上放测试文件:
echo"Hello TFTP"|sudotee/var/lib/tftpboot/test.txt- 在另一台机器(或本机)测试(安装 tftp 客户端):
tftp 服务器IP tftp>get test.txt# 下载tftp>put newfile.txt# 上传(需 --create 选项)tftp>quit- 查看下载的文件:
cat test.txt
5. 安全最佳实践(非常重要!)
TFTP无加密、无认证,易受攻击:
- 仅限局域网:不要暴露到公网(避免 DoS 或文件窃取)。
- 防火墙限制:只允许特定 IP 访问(如
firewall-cmd --add-source=192.168.1.0/24 --service=tftp)。 - 使用 --secure:限制客户端只能访问指定目录。
- 最小权限:目录权限 755,只读时禁用 --create。
- SELinux(RHEL):启用并设置上下文
sudo chcon -R -t public_content_t /var/lib/tftpboot。 - 临时使用:用完后关闭服务
systemctl stop tftpd-hpa。 - 日志监控:查看
/var/log/syslog或/var/log/messages。
配置完成后,你的 TFTP 服务器即可用于嵌入式开发、路由器升级或 PXE 启动。如果遇到问题(如权限错误、超时),检查日志和防火墙。欢迎提供具体错误继续提问!