Linux怎么配置TFTP服务_Linux如何搭建简单文件传输服务【教程】

云伟小哥_5409

云伟小哥_5409

2026-04-01

1045人浏览

原创

tftpd-hpa 是 linux 下最稳妥的 tftp 服务实现,因其维护活跃、兼容主流发行版、默认非 root 运行且具备 --secure 目录限制等安全机制,能有效规避 tftp 无认证风险。

linux怎么配置tftp服务_linux如何搭建简单文件传输服务【教程】

为什么 tftpd-hpa 是 Linux 下最稳妥的选择

因为系统级 TFTP 服务基本就这一个维护活跃、兼容主流发行版(Debian/Ubuntu/CentOS/RHEL)的实现,xinetd + tftpd 组合已过时且容易权限失控。它默认以非 root 用户运行,能规避 TFTP 协议本身无认证带来的高危风险。

常见错误现象:Permission denied 错误不是路径没写对,而是 tftpd-hpa 进程根本没权限读取你指定的目录;或者客户端收到 Timeout,其实是防火墙拦了 UDP 69 端口,不是服务没起来。

  • 安装命令:Debian/Ubuntu 用 sudo apt install tftpd-hpa,CentOS/RHEL 用 sudo yum install tftp-server(注意包名不同)
  • 核心配置文件是 /etc/default/tftpd-hpa,不是 /etc/xinetd.d/tftp
  • TFTP_DIRECTORY 必须是绝对路径,且该目录属主需为 tftp 用户(或至少对该用户可读)
  • 启动后检查端口:运行 sudo ss -uln | grep :69,看到 127.0.0.1:69 或 *:69 才算监听成功

如何让 TFTP 目录既安全又可用

不能直接把 /var/tftpboot 设成 777 —— tftpd-hpa 默认以 tftp 用户身份访问,只要保证该用户有读(GET)或读+写(PUT)权限即可,其他用户无需任何权限。

使用场景:嵌入式设备刷固件、PXE 启动传内核镜像、交换机批量配置下发——这些都只要单向读取,chmod 755 /srv/tftp + chown root:tftp /srv/tftp 就够了;如果真要上传(比如日志回传),才需 chmod 775 并确保 tftp 用户在 tftp 组里。

  • 推荐路径:用 /srv/tftp(符合 FHS 标准),别用 /tftpboot 或家目录
  • 创建后立即执行:sudo chown -R root:tftp /srv/tftp 和 sudo chmod -R 755 /srv/tftp
  • 如果启用了 --secure 模式(默认开启),tftpd-hpa 只允许访问 TFTP_DIRECTORY 及其子目录,硬链接和符号链接会被拒绝

客户端连不上?先盯住这三件事

90% 的连接失败跟服务是否运行无关,而是卡在基础连通性上。TFTP 是纯 UDP 协议,没有三次握手,发不出去或收不到响应就是断的。

错误信息如 Transfer timed out 或 Cannot find host,说明请求压根没到服务端;而 Access violation 是到了但权限/路径不对。

  • 关掉本地防火墙:sudo ufw disable(Ubuntu)或 sudo systemctl stop firewalld(RHEL)
  • 确认客户端和服务端在同一子网,或路由明确放行 UDP 69(注意:不是 TCP!)
  • 用 tftp 命令行工具测试时,必须加 -v 参数看详细过程:tftp -v 192.168.1.100,再输入 get test.bin
  • 别用浏览器或 curl 测 TFTP——它们不支持 UDP 文件传输协议

tftpd-hpa 的几个关键启动参数含义

参数写错会导致服务静默失败,比如漏掉 --secure 可能被绕过目录限制,加了 --ipv4 却在 IPv6 环境下运行会直接退出。

配置文件 /etc/default/tftpd-hpa 中的 TFTP_OPTIONS 字段控制行为,不是所有参数都必要,但以下三个最常被改错:

  • --secure:强制限定访问路径,必须启用;禁用它等于打开任意文件读取漏洞
  • --create:仅当需要客户端上传(PUT)时才加,否则去掉;加了但目录不可写,上传会报 Access violation
  • --user tftp:指定运行用户,不要改成 root——这是最大安全陷阱

改完配置必须重启服务:sudo systemctl restart tftpd-hpa,而不是 reload。

真正麻烦的是跨子网转发和 SELinux 上下文——前者要配 iptables DNAT,后者得用 semanage fcontext 重标路径类型,这两处一旦出问题,日志里几乎不报错,只能靠 journalctl -u tftpd-hpa -f 实时盯输出。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
curl_exec
curl_exec

curl_exec函数是PHP cURL函数列表中的一种,它的功能是执行一个cURL会话。给大家总结了一下php curl_exec函数的一些用法实例,这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。他的返回值成功时返回TRUE, 或者在失败时返回FALSE。

2023.06.14

3483

6

linux常见下载安装工具
linux常见下载安装工具

linux常见下载安装工具有APT、YUM、DNF、Snapcraft、Flatpak、AppImage、Wget、Curl等。想了解更多linux常见下载安装工具相关内容,可以阅读本专题下面的文章。

2023.10.30

775

4

default gateway怎么配置
default gateway怎么配置

配置default gateway的步骤:1、了解网络环境;2、获取路由器IP地址;3、登录路由器管理界面;4、找到并配置WAN口设置;5、配置默认网关;6、保存设置并退出;7、检查网络连接是否正常。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.12.07

357

5

tcp和udp的区别
tcp和udp的区别

TCP和UDP的区别,在连接性、可靠性、速度和效率、数据报大小以及适用场景等方面。本专题为大家提供tcp和udp的区别的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.25

463

5

udp是什么协议
udp是什么协议

UDP是OSI参考模型中一种无连接的传输层协议。本专题为大家带来udp是什么协议的相关文章,免费提供给大家。

2023.08.08

2611

5

tcp和udp有什么区别
tcp和udp有什么区别

tcp和udp的区别有:1、udp是无连接的,tcp是面向连接的;2、udp是不可靠传输,tcp是可靠传输;3、udp是面向报文传输,tcp是面向字节流传输。想了解更多tcp相关的内容,可阅读本专题下面的相关文章。

2024.11.14

3089

8

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

3890

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3353

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2493

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习