如何在CentOS 8/RHEL 8 Linux上设置TFTP服务器

时间:2020-02-23 14:30:59  来源:igfitidea点击:

本指南将讨论如何在CentOS 8/RHEL 8 Linux机器上安装TFTP Server。普通文件传输协议(TFTP)是UDP协议,旨在允许用户在系统之间传输文件。 TFTP使用UDP端口69进行数据传输。

TFTP协议的最理想用例是无盘设备(如工作站)的远程启动。通过在CentOS 8/RHEL 8上设置TFTP服务器,可以进行大型安装,例如Fedora/CentOS和RHEL服务器以及网络中的桌面安装。

使用TFTP,我们只能在远程系统中读写文件,而不能在远程服务器上列出文件或者进行任何更改。由于不支持用户身份验证,建议在局域网(LAN)中运行TFTP服务器。 TFTP仅提供很少的安全性。

那么,如何在CentOS 8/RHEL 8上安装TFTP Server?

在RHEL 8/CentOS 8上安装TFTP服务器

TFTP服务器和客户端软件包可在RHEL/CentOS 8 Linux的基本OS存储库中找到。打开我们喜欢的终端模拟器并运行以下命令,以在RHEL 8/CentOS 8上安装TFTP Server。

sudo dnf install -y tftp-server tftp

在RHEL 8/CentOS 8上配置TFTP服务器

安装会自动在/usr/lib/systemd/system下为systemd创建一个tftp服务和套接字文件。将系统配置文件复制到/etc/systemd/system目录。

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

编辑/etc/systemd/system/tftp-server.service服务并设置这些值。

sudo tee /etc/systemd/system/tftp-server.service<<EOF
[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
EOF

添加到ExecStart行中的选项的含义。-c:允许创建新文件。-p:用于在正常的系统提供的访问控制之上不执行任何其他权限检查。-s:建议用于安全性和与较早的引导ROM的兼容性。

请注意,根据服务文件中的配置,文件上载和下载的默认位置是/var/lib/tftpboot。

在RHEL 8/CentOS 8上启动TFTP服务器

我们已经正确完成了TFTP服务器的配置。让我们重新加载systemd守护程序:

sudo systemctl daemon-reload

重新加载后,启动并启用服务器:

$sudo systemctl enable --now tftp-server
Created symlink /etc/systemd/system/multi-user.target.wants/tftp-server.service → /etc/systemd/system/tftp-server.service.
Created symlink /etc/systemd/system/sockets.target.wants/tftp-server.socket → /etc/systemd/system/tftp-server.socket.

确认服务正在运行。

systemctl status tftp-server

这是我的截图。

为TFTP目录设置正确的权限。

sudo chmod 777 /var/lib/tftpboot

对于运行防火墙服务的系统,允许使用TFTP端口:

sudo firewall-cmd --add-service=tftp --permanent
sudo firewall-cmd --reload

将测试文件添加到TFTP目录。

sudo touch  /var/lib/tftpboot/file{1..3}.txt
echo "Hello File 1" | sudo tee /var/lib/tftpboot/file1.txt
echo "Hello File 2" | sudo tee /var/lib/tftpboot/file2.txt
echo "Hello File 3" | sudo tee /var/lib/tftpboot/file3.txt

在CentOS 8/RHEL 8上使用TFTP客户端

让我们使用TFTP客户端测试与TFTP Server的连接。这可能是网络中的其他计算机。但是可以将运行TFTP服务器的同一台计算机用于此操作

安装TFTP客户端:

sudo yum install tftp -y

尝试使用tftp命令连接到TFTP服务器。

$tftp 10.10.1.152
tftp>

这是我们可以在shell上使用的命令。

Commands Jan be abbreviated.  Commands are:

connect 	connect to remote tftp
mode    	set file transfer mode
put     	send file
get     	receive file
quit    	exit tftp
verbose 	toggle verbose mode
trace   	toggle packet tracing
literal 	toggle literal mode, ignore ':' in file name
status  	show current status
binary  	set mode to octet
ascii   	set mode to netascii
rexmt   	set per-packet transmission timeout
timeout 	set total retransmission timeout
?       	print help information
help    	print help information

示例允许下载添加的文件。

$cat file1.txt file2.txt file3.txt 
Hello File 1
Hello File 2
Hello File 3

要上传文件,请使用put命令。

tftp> put client_test.log

使用退出退出。

tftp> quit

我们已经了解了如何在CentOS 8/RHEL 8 Linux系统上安装TFTP服务器,以及如何配置TFTP客户端以从TFTP服务器上载和下载文件。在下一次之前,请保持连接状态以获取更新。