linux下安装配置tftp服务器

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)

安装

sudo apt update
sudo apt install tftpd-hpa   # 服务器
sudo apt install tftp-hpa    # 客户端(可选,用于测试)

配置

  • 默认共享目录:/var/lib/tftpboot(或 /srv/tftp
sudo mkdir -p /var/lib/tftpboot
sudo chmod 777 /var/lib/tftpboot   # 允许读写(生产环境慎用,建议 755)
sudo chown -R tftp:tftp /var/lib/tftpboot   # 所有者设为 tftp 用户
  • 编辑配置文件 /etc/default/tftpd-hpa
sudo nano /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: 详细日志

启动与开机自启

sudo systemctl restart tftpd-hpa
sudo systemctl enable tftpd-hpa
sudo systemctl status tftpd-hpa   # 检查运行状态

2. CentOS/RHEL/Rocky/AlmaLinux 系统

安装

sudo dnf update   # 或 yum update(旧版)
sudo dnf install tftp-server tftp   # 服务器 + 客户端
sudo dnf install xinetd             # 如果未安装(部分旧版需)

配置

  • 默认共享目录:/var/lib/tftpboot
sudo mkdir -p /var/lib/tftpboot
sudo chmod 755 /var/lib/tftpboot
sudo chown -R nobody:nobody /var/lib/tftpboot   # 安全所有者
  • TFTP 通过 systemd socket 激活,或 xinetd(旧版)。
  • 修改 systemd 服务(推荐现代方式):
sudo cp /usr/lib/systemd/system/tftp.service /etc/systemd/system/tftp-server.service
sudo cp /usr/lib/systemd/system/tftp.socket /etc/systemd/system/tftp-server.socket

sudo nano /etc/systemd/system/tftp-server.service

修改 ExecStart 行:

ExecStart=/usr/sbin/in.tftpd -s /var/lib/tftpboot -c --secure
# -s: chroot 到目录,-c: 允许创建文件,--secure: 安全模式
  • 重新加载:
sudo systemctl daemon-reload

启动与开机自启

sudo systemctl start tftp.socket
sudo systemctl enable tftp.socket tftp.service
sudo systemctl status tftp   # 检查

3. 防火墙配置(所有系统必做)

TFTP 使用 UDP 69 端口:

  • Ubuntu(ufw)
sudo ufw allow 69/udp
sudo ufw reload
  • CentOS/RHEL(firewalld)
sudo firewall-cmd --permanent --add-service=tftp
sudo firewall-cmd --reload

4. 测试 TFTP 服务器

  • 在服务器上放测试文件:
echo "Hello TFTP" | sudo tee /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 启动。如果遇到问题(如权限错误、超时),检查日志和防火墙。欢迎提供具体错误继续提问!

文章已创建 3707

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部