凌峰创科服务平台

如何检查并开启TFTP服务器?

TFTP(Trivial File Transfer Protocol,简单文件传输协议)是一个轻量级的文件传输协议,常用于网络设备的固件升级、配置文件备份或启动(PXE 网络安装),要使用它,您需要在一台服务器上安装并运行 TFTP 服务。

如何检查并开启TFTP服务器?-图1
(图片来源网络,侵删)

我将分三步为您解答:

  1. 如何检查 TFTP 服务器是否已开启
  2. 如何开启 TFTP 服务器(以 Linux 系统为例)
  3. 如何验证 TFTP 服务器是否正常工作

第一步:如何检查 TFTP 服务器是否已开启

您可以通过以下几种方法来检查系统上是否正在运行 TFTP 服务。

使用 psnetstat 命令(推荐)

这是最直接的方法,可以同时检查进程是否运行和端口是否监听。

  1. 检查 TFTP 进程是否在运行: TFTP 服务通常由一个名为 tftpdtftpd-hpa 的进程提供服务。-e 参数可以显示完整的命令行。

    如何检查并开启TFTP服务器?-图2
    (图片来源网络,侵删)
    ps -ef | grep tftpd

    如果看到类似下面的输出,说明 TFTP 服务进程正在运行:

    root      1234  1  0 10:00 ?        00:00:00 /usr/sbin/in.tftpd --listen --user tftp --address :69 -s /var/lib/tftpboot
    • in.tftpd 是 TFTP 的守护进程。
    • 69 是 TFTP 协议默认使用的 UDP 端口。
  2. 检查 69 端口是否正在监听: TFTP 服务默认在 UDP 端口 69 上监听,使用 netstatss 命令可以查看。

    # 使用 netstat (较老但常用)
    netstat -ulnp | grep 69
    # 使用 ss (推荐,更现代)
    ss -ulnp | grep 69

    如果看到类似下面的输出,说明端口正在被监听:

    udp    UNCONN 0      0      0.0.0.0:69             0.0.0.0:*      users:(("in.tftpd",pid=1234,fd=4))
    • udp 表示是 UDP 协议。
    • 0.0.0:69 表示在所有网络接口上监听 69 端口。

使用系统服务管理工具(systemctl

在现代的 Linux 发行版(如 Ubuntu 16+, CentOS 7+, Debian 8+)中,TFTP 服务通常被封装成一个系统服务。

如何检查并开启TFTP服务器?-图3
(图片来源网络,侵删)
  1. 检查服务状态:

    # 对于 Ubuntu/Debian (使用 tftpd-hpa)
    systemctl status tftpd-hpa
    # 对于 CentOS/RHEL (使用 tftp-server)
    systemctl status tftp

    如果服务正在运行,输出中会显示 active (running)。 如果服务已安装但未运行,输出会显示 inactive (dead)

  2. 列出所有已启用的服务(查找 TFTP 相关服务):

    systemctl list-unit-files | grep tftp

    这会显示类似 tftp.service enabledtftpd-hpa.service disabled 的信息,enabled 表示开机自启,disabled 表示不会开机自启。


第二步:如何开启 TFTP 服务器

如果检查后发现 TFTP 服务未开启,您可以按照以下步骤进行安装和配置,这里以最常用的 Ubuntu/DebianCentOS/RHEL 为例。

场景 A:在 Ubuntu/Debian 系统上

  1. 安装 TFTP 服务器软件包: tftpd-hpa 是 Ubuntu/Debian 上最流行的 TFTP 服务器实现。

    sudo apt update
    sudo apt install tftpd-hpa
  2. 配置 TFTP 服务器: 安装后,主配置文件位于 /etc/default/tftpd-hpa,您需要编辑这个文件来指定 TFTP 的根目录和运行参数。

    sudo nano /etc/default/tftpd-hpa

    修改或确保文件内容如下,将 /home/tftp 改为您想作为文件共享的目录(如果该目录不存在,请先创建它):

    # /etc/default/tftpd-hpa
    TFTP_USERNAME="tftp"
    TFTP_DIRECTORY="/home/tftp"  <!-- 这是存放要传输文件的根目录 -->
    TFTP_ADDRESS=":69"
    TFTP_OPTIONS="--secure --create"
    • TFTP_DIRECTORY: 非常重要,这是客户端可以访问的根目录,客户端无法访问此目录之外的任何文件。
    • TFTP_OPTIONS:
      • --secure: 限制在 TFTP_DIRECTORY 目录内,防止目录遍历攻击。
      • --create: 允许客户端上传文件到服务器,如果只需要下载,可以不加此选项。
  3. 创建 TFTP 根目录并设置权限: TFTP 服务器通常以 tftp 用户身份运行,因此需要确保该用户对根目录有读写权限。

    # 创建目录
    sudo mkdir -p /home/tftp
    # 设置目录所有者为 tftp 用户
    sudo chown -R tftp:tftp /home/tftp
    # 设置目录权限为 777 (最简单,但注意安全风险) 或 755
    # 如果需要上传,客户端需要写权限,777 最方便
    sudo chmod -R 777 /home/tftp
  4. 启动并启用 TFTP 服务:

    # 启动服务
    sudo systemctl start tftpd-hpa
    # 设置开机自启
    sudo systemctl enable tftpd-hpa

场景 B:在 CentOS/RHEL 系统上

  1. 安装 TFTP 服务器软件包: tftp-server 是 CentOS/RHEL 上的标准包。

    sudo yum install tftp-server
    # 或者使用 dnf (CentOS 8+)
    # sudo dnf install tftp-server
  2. 配置 TFTP 服务器: 配置文件是 /etc/xinetd.d/tftpxinetd 是一个超级服务器,TFTP 服务由它管理。

    sudo nano /etc/xinetd.d/tftp

    找到 server_args 这一行,并确保它指向您想作为根目录的路径,/var/lib/tftpboot

    service tftp
    {
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot  <!-- 修改这个路径 -->
        disable                 = no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
    }
    • server_args = -s /var/lib/tftpboot: -s 选项指定了 TFTP 的根目录。
  3. 创建 TFTP 根目录并设置权限:

    # 创建目录 (如果不存在)
    sudo mkdir -p /var/lib/tftpboot
    # 设置权限
    sudo chmod -R 777 /var/lib/tftpboot
  4. 启动并启用服务: 在 CentOS/RHEL 上,需要启用 xinetd 服务,因为它负责管理 TFTP。

    # 启动 xinetd 服务
    sudo systemctl start xinetd
    # 设置开机自启
    sudo systemctl enable xinetd
    # 如果系统有防火墙 (firewalld),需要开放 69 端口
    sudo firewall-cmd --permanent --add-port=69/udp
    sudo firewall-cmd --reload

第三步:如何验证 TFTP 服务器是否正常工作

完成配置后,最好的验证方式就是实际进行一次文件传输。

  1. 在服务器上准备一个测试文件: 在您配置的 TFTP 根目录(/home/tftp/var/lib/tftpboot)里创建一个文件。

    echo "Hello, TFTP Server!" | sudo tee /home/tftp/test.txt
  2. 在客户端(可以是同一台服务器)进行测试: 使用 tftp 命令行客户端进行下载和上传测试。

    • 下载文件到本地:
      tftp -
分享:
扫描分享到社交APP
上一篇
下一篇