凌峰创科服务平台

Ubuntu安装TFTP服务器,步骤有哪些?

下面我将为您提供两种最常见 TFTP 服务器软件的安装和配置方法:tftpd-hpa (推荐) 和 atftpd

Ubuntu安装TFTP服务器,步骤有哪些?-图1
(图片来源网络,侵删)

使用 tftpd-hpa (推荐)

tftpd-hpa 是一个功能完善、稳定且广泛使用的 TFTP 服务器实现,是大多数情况下的首选。

安装 TFTP 服务器

打开终端,使用 apt 包管理器进行安装:

sudo apt update
sudo apt install tftpd-hpa

安装过程中,系统可能会弹出一个配置界面,询问您如何配置 tftpd-hpa,通常选择默认的“独立”模式即可,然后点击“确定”。

配置 TFTP 服务器

安装完成后,我们需要编辑其配置文件 /etc/default/tftpd-hpa

Ubuntu安装TFTP服务器,步骤有哪些?-图2
(图片来源网络,侵删)
sudo nano /etc/default/tftpd-hpa

可能如下所示,我们需要修改或确保 TFTP_OPTIONSTFTP_DIRECTORY 这两项配置正确。

# /etc/default/tftpd-hpa
# 服务器的运行方式,默认是独立运行。
# 可以是 inetd, standalone, 或 wait
RUN_DAEMON="yes"
# 当 RUN_DAEMON="yes" 时,此选项用于定义服务启动参数
# --create: 允许客户端创建新文件
# --secure: 将 chroot 到指定目录,增强安全性
# --verbosity 7: 设置详细日志级别,方便排查问题
TFTP_OPTIONS="--secure --create --verbosity 7"
# TFTP 服务器存放文件的根目录
# 默认是 /srv/tftp
TFTP_DIRECTORY="/srv/tftp"
# 运行 TFTP 服务器的用户和用户组
# 默认是 tftp:tftp
TFTP_USERNAME="tftp"
TFTP_USERNAME="tftp"
# 服务器的 IP 地址,留空则监听所有网络接口
# TFTP_ADDRESS=":69"

关键配置项解释:

  • TFTP_DIRECTORY: 这是 TFTP 服务器共享文件的根目录,客户端连接后,只能访问这个目录及其子目录,我们将使用 /srv/tftp
  • TFTP_OPTIONS:
    • --secure: 非常重要,此选项会启用 chroot 环境,将 TFTP 服务器限制在 TFTP_DIRECTORY 目录中,这大大提高了安全性。
    • --create: 允许客户端向服务器上传文件,如果只需要下载,可以不加此选项。
    • --port-range: 可以指定端口范围,以符合某些防火墙策略。

配置步骤:

  1. 创建 TFTP 根目录并设置正确的权限:

    Ubuntu安装TFTP服务器,步骤有哪些?-图3
    (图片来源网络,侵删)
    # 创建目录
    sudo mkdir -p /srv/tftp
    # 设置目录所有者为 tftp 用户,并赋予读写执行权限
    sudo chown -R tftp:tftp /srv/tftp
    # 设置目录权限为 777 (最宽松,确保可读写)
    # 在生产环境中,应根据需求设置更严格的权限
    sudo chmod -R 777 /srv/tftp
  2. 保存并关闭配置文件 (在 nano 中按 Ctrl+X,然后按 Y,最后按 Enter)。

启动并启用服务

配置完成后,重启 tftpd-hpa 服务以应用新配置,并设置为开机自启。

# 重启服务
sudo systemctl restart tftpd-hpa
# 设置开机自启
sudo systemctl enable tftpd-hpa
# 检查服务状态,确保运行正常
sudo systemctl status tftpd-hpa

如果看到绿色的 active (running) 字样,说明服务已成功启动。

防火墙配置 (如果需要)

如果您的系统启用了 UFW 防火墙,需要允许 TFTP 通信 (使用 UDP 端口 69)。

sudo ufw allow tftp

测试 TFTP 服务器

让我们测试一下服务器是否正常工作。

步骤 A: 在服务器上准备一个测试文件

# 在 TFTP 根目录下创建一个名为 test.txt 的文件
echo "Hello from TFTP Server" | sudo tee /srv/tftp/test.txt

步骤 B: 从另一台 Linux/Ubuntu 机器测试 (需要安装 tftp-hpa 客户端)

如果您在另一台机器上测试,先安装客户端:

sudo apt install tftp-hpa

步骤 C: 执行测试

回到您的 TFTP 服务器 本身,执行以下命令进行测试:

  1. 下载测试

    # 从服务器下载 test.txt 文件到当前目录
    tftp 127.0.0.1 -c get /test.txt
    • 0.0.1 是本地回环地址,表示从本机下载。
    • -c get 是执行 get 命令(下载)。
    • 如果成功,当前目录下会出现一个 test.txt 文件。
  2. 上传测试

    # 上传刚刚下载的 test.txt 文件回服务器,重命名为 upload.txt
    tftp 127.0.0.1 -c put test.txt /upload.txt
    • -c put 是执行 put 命令(上传)。
    • 如果成功,/srv/tftp 目录下会出现一个 upload.txt 文件。

检查 /srv/tftp 目录,如果文件都存在,说明您的 TFTP 服务器已经配置成功!

ls -l /srv/tftp

使用 atftpd

atftpd 是另一个流行的 TFTP 服务器实现,它支持多线程,性能可能更好。

安装

sudo apt update
sudo apt install atftpd

配置

atftpd 的配置通常通过命令行参数或修改 /etc/default/atftpd 来完成。

sudo nano /etc/default/atftpd

修改或添加以下内容:

# /etc/default/atftpd
# 运行选项
# --port: 指定端口
# --tftpd: 指定 tftpd 程序路径
# --daemon: 以守护进程模式运行
# --no-fork: 不 fork,方便调试
# --create: 允许创建文件
# --ipv4: 仅使用 IPv4
# --verbose: 详细输出
OPTIONS="--tftpd-timeout 300 --retry-timeout 5 --maxthread 100 --no-fork --ipv4 --verbose --create --daemon --port 69"
# TFTP 根目录
# 注意:atftpd 的配置项名是 USE_INETD 和 SERVER_OPTIONS
# USE_INETD=no,则 SERVER_OPTIONS 中的第一个路径被视为根目录
SERVER_OPTIONS="--no-fork --port 69 --create /srv/tftp"
# 是否由 inetd/xinetd 管理
USE_INETD="no"

配置步骤:

  1. 创建 TFTP 根目录并设置权限:

    sudo mkdir -p /srv/tftp
    sudo chown -R nobody:nogroup /srv/tftp
    sudo chmod -R 777 /srv/tftp

    注意:atftpd 默认使用 nobody 用户,与 tftpd-hpa 不同。

  2. 保存并关闭文件。

启动并启用服务

sudo systemctl restart atftpd
sudo systemctl enable atftpd
sudo systemctl status atftpd

测试

测试方法与 tftpd-hpa 完全相同,只需确保测试文件在 /srv/tftp 目录下即可。


故障排查

如果遇到问题,可以按照以下步骤排查:

  1. 检查服务状态:

    sudo systemctl status tftpd-hpa  # 或 atftpd

    查看是否有错误信息。

  2. 检查端口是否监听:

    sudo netstat -ulnp | grep 69
    # 或者使用 ss
    sudo ss -ulnp | grep 69

    确保能看到 TFTP 服务在监听 UDP 69 端口。

  3. 检查日志文件:

    • 对于 tftpd-hpa,日志通常直接输出到系统日志,可以使用 journalctl 查看:
      sudo journalctl -u tftpd-hpa -f
    • 对于 atftpd,如果配置了 --verbose,日志也会输出到系统日志。
  4. 检查文件和目录权限: 这是最常见的问题,确保 TFTP 根目录 (/srv/tftp) 和其内部文件的权限和所有者设置正确,特别是当使用 --secure (chroot) 时,目录本身必须可执行 (x 权限)。

    sudo ls -ld /srv/tftp
    sudo ls -l /srv/tftp
  5. 检查防火墙: 确保防火墙没有阻止 UDP 69 端口的流量。

希望这份详细的指南能帮助您成功在 Ubuntu 上搭建 TFTP 服务器!

分享:
扫描分享到社交APP
上一篇
下一篇