评论

收藏

[Linux] 如何在 Linux 上设置古老又简单的 TFTP 服务器

服务系统 服务系统 发布于:2022-07-28 10:49 | 阅读数:472 | 评论:0

导读:您知道流行的文件传输协议有一个更简单的替代方案吗?它就是 TFTP,以下是在  上设置它的方法。
TFTP(Trivial File Transfer Protocol,简单文件传输协议)于 1980 年首次被定义。它是一个相当古老的协议,于 1981 年 6 月由 Karen R. Sollins 在 RFC 783(征求意见)中作为 TFTP 协议修订版 2 发布。
早期,TFTP 的主要目标是通过网络发送和接收文件。特别是,它用于传输引导期间所需的文件,以使系统能够通过网络引导。
下面介绍如何在 Linux 机器上设置 TFTP 服务器。
什么是 TFTP?
TFTP 仍用于文件传输目的,它支持的功能没有根本变化。TFTP 用于通过 UDP/IP 下载和发送文件。它没有其他文件传输协议中常见的身份和授权控制、文件列表、删除或重命名等附加功能。
与在传输层使用 TCP 的高级文件传输协议不同,它工作在 UDP 协议上,不具有检查属于文件的数据包是否会发送到另一端等功能。由于这个限制,它更适合在局域网中使用,而不是在互联网或广域网中使用。
尽管上面列出了所有这些看似不利的特性,但 TFTP 协议非常强大的一个方面是它的简单性。与其替代方案相比,该协议的实现非常容易,即使对于没有操作系统的环境也是如此。由于这个特性,它在嵌入式系统中有广泛的使用领域。
在 Linux 上安装 TFTP
服务器使用嵌入式设备时,安装 TFTP 服务器服务很重要。在 Linux 系统上,可以运行多个 TFTP 服务器实现。如果您使用的是基于 Debian 的发行版,您可以安装tftpd-hpa、tftpd或atftpd软件包。如果您不确定选择哪一个,请考虑安装 tftpd-hpa 软件包。
┌──(linuxmi㉿linuxmi)-[~/linuxmi.com]└─$ sudo apt-get install tftpd-hpa
DSC0000.jpg
安装后,TFTP 服务将开始侦听 UDP 端口 69。要通过 TFTP 服务器将文件提供给其他系统,您需要记住一些先决条件:
第一是将所需文件复制到 TFTP 主目录或该主目录下的目录,第二是使文件权限对公众可见
要找出 TFTP 服务器主目录是什么,您可以查看/etc/default/tftpd-hpa文件中的TFTP_DIRECTORY变量。通常,您会看到/var/lib/tftpboot或/srv/tftp 之类的目录。如果需要,您可以更改此目录并重新启动服务。
┌──(linuxmi㉿linuxmi)-[~/linuxmi.com]└─$ cat /etc/default/tftpd-hpa
DSC0001.jpg
为了便于使用,如果您将相关 TFTP 主目录的所有者更改为您的用户帐户,则无需在运行的每个中添加 sudo 前缀。使用 chown 将所有权从 root 更改为当前用户:
sudo chown -R $USER /srv/tftp
TFTP 服务器包名称和默认主目录可能因使用的 Linux 发行版而异。
使用 TFTP 服务器发送文件
有时在某些情况下,TFTP 是将文件从嵌入式 Linux 系统移动到外部环境的唯一选择。例如,有时系统可能不支持任何可用于传输文件的可写媒体。
在这种情况下,由于 TFTP 客户端可能会在busybox中编译,您可以将系统中保存的文件发送到网络上的 TFTP 服务器。
要使用 TFTP 客户端应用程序,请发出busybox tftp命令:
busybox tftp
要将示例文件发送到 TFTP 服务器,您需要使用如下命令:
busybox tftp -l example.bin -p 192.168.1.111
虽然上面的命令是正确的,但在将文件传输到 TFTP 服务器时会出错。由于返回的错误消息不是不言自明的,因此很难理解真正的问题是什么。
这里的问题是因为 TFTP 服务器上的一些安全程序。TFTP 要求具有相同名称的文件应位于将写入文件的目录中,作为文件上传的先决条件,并且该文件的写入权限应可供所有人使用。
换言之,无法通过 TFTP 客户端上传 TFTP 服务器上不存在的文件。如果您创建一个同名的空文件并编辑其访问权限,则上述上传过程将成功。为此,您必须在相关的 TFTP 服务器主目录中运行以下命令:
cd /srv/tftptouch example.bin
chmod 666 example.bin
现在您可以成功执行上传了。
也可以禁用上述安全措施并让 TFTP 服务器创建一个不存在的文件。为此,您可以在启动tftpd-hpa应用程序时使用-c或--create参数。将此参数添加到/etc/default/tftpd-hpa文件中现有的TFTPD_OPTIONS变量就足够了:
# /etc/default/tftpd-hpaTFTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/tftp"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure --create"
为什么使用 TFTP 服务器进行文件传输?
TFTP 最重要的优点是速度快,并且可以帮助您节省时间。它是将网络设备的配置文件传输到其他系统的理想选择。此外,它具有非常简单的使用标准。它可以与基于 Windows 和 Linux 的操作系统上的软件一起轻松运行。最后,在技术上无法使用 FTP 的情况下,TFTP 总是可以挽救局面。
当然,最大的缺点是不安全。因此,使用 TFTP 服务器传输文件时必须非常小心。
除了文件传输之外,您不能使用 TFTP 服务器执行文件删除、编辑和修改等功能。对于那些使用或寻求高级系统的人来说,此功能是一个主要缺点。最后,它不需要身份验证,如果您认真对待自己的安全性,这是一个主要缺点。
在其他操作系统上设置 TFTP
如果要在 Windows 上使用 TFTP,则无需安装任何第三方软件。您可以使用控制面板中的打开或关闭 Windows 功能选项启用 TFTP。


评论

使用道具 举报