TFTP,或普通文件传输协议,允许用户使用 UDP协议. 默认情况下,它使用 UDP 端口 69。TFTP 协议被广泛用于支持无盘设备的远程启动。 因此,在您自己的本地网络上设置 TFTP 服务器可能是一种有趣的方式 Fedora 装置,或其他无盘操作。
TFTP 只能从远程系统读取文件或从远程系统写入文件。 它无法列出文件或在远程服务器上进行任何更改。 也没有关于用户身份验证的规定。 由于安全隐患和缺乏高级功能,TFTP 通常只在局域网 (LAN) 上使用。
TFTP 服务器安装
您需要做的第一件事是安装 TFTP 客户端和服务器包:
dnf install tftp-server tftp -y
这将为 /usr/lib/systemd/system 下的 systemd 创建一个 tftp 服务和套接字文件。
/usr/lib/systemd/system/tftp.service /usr/lib/systemd/system/tftp.socket
接下来,将这些文件复制并重命名为 /etc/systemd/system:
cp /usr/lib/systemd/system/tftp.service /etc/systemd/system/tftp-server.service cp /usr/lib/systemd/system/tftp.socket /etc/systemd/system/tftp-server.socket
进行本地更改
复制并重命名这些文件后,您需要从新位置编辑这些文件,以添加一些附加参数。 以下是 tftp-server.service 文件最初的样子:
[Unit] Description=Tftp Server Requires=tftp.socket Documentation=man:in.tftpd [Service] ExecStart=/usr/sbin/in.tftpd -s /var/lib/tftpboot StandardInput=socket [Install] Also=tftp.socket
对 [Unit] 部分:
Requires=tftp-server.socket
对 ExecStart 行进行以下更改:
ExecStart=/usr/sbin/in.tftpd -c -p -s /var/lib/tftpboot
以下是选项的含义:
- 这 -C 选项允许创建新文件。
- 这 -p 选项用于在正常系统提供的访问控制之上不执行额外的权限检查。
- 这 -s 建议使用该选项以确保安全以及与某些无法轻易在其请求中包含目录名称的引导 ROM 兼容。
传输文件的默认上传/下载位置是 /var/lib/tftpboot。
接下来,对 [Install] 部分:
[Install] WantedBy=multi-user.target Also=tftp-server.socket
不要忘记保存您的更改!
这是完整的 /etc/systemd/system/tftp-server.service 文件:
[Unit] Description=Tftp Server Requires=tftp-server.socket Documentation=man:in.tftpd [Service] ExecStart=/usr/sbin/in.tftpd -c -p -s /var/lib/tftpboot StandardInput=socket [Install] WantedBy=multi-user.target Also=tftp-server.socket
启动 TFTP 服务器
重新加载 systemd 守护进程:
systemctl daemon-reload
现在启动并启用服务器:
systemctl enable --now tftp-server
要更改 TFTP 服务器的权限以允许上传和下载功能,请使用此命令。 注意 TFTP 是一种固有的不安全协议,因此在您与其他人共享的网络上可能不建议这样做。
chmod 777 /var/lib/tftpboot
配置防火墙以允许 TFTP 流量:
firewall-cmd --add-service=tftp --perm firewall-cmd --reload
客户端配置
安装 TFTP 客户端:
yum install tftp -y
使用 tftp 命令连接 TFTP 服务器。 这是一个 example 启用详细选项:
[client@thinclient:~ ]$ tftp 192.168.1.164 tftp> verbose Verbose mode on. tftp> get server.logs getting from 192.168.1.164:server.logs to server.logs [netascii] Received 7 bytes in 0.0 seconds [inf bits/sec] tftp> quit [client@thinclient:~ ]$
请记住,TFTP 没有列出文件名的能力。 因此,在运行 get 命令下载任何文件之前,您需要知道文件名。