1. 软件安装
- TFTP客户端: tftp-hpa
- TFTP服务端: tftpd-hpa
- 网络守护进程服务程序: xinetd
[zqq@ubuntu ~]# sudo apt install tftp-hpa
[zqq@ubuntu ~]# sudo apt install tftpd-hpa
[zqq@ubuntu ~]# sudo apt install xinetd
2. 配置TFTP服务器
- 修改
/etc/default/tftpd-hpa
配置文件:
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftpboot " //将 /tftpboot 改成自己建立的tftp共享文件夹路径
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-l -c -s" //这里是选项
- 新建|修改
/etc/xinetd.d/tftp
配置文件:
// 如果有这个文件, 修改一下就可以了
service tftp
{
disable = no // tftp 服务器开关 no:on yes:off
socket_type = dgram
protocol = udp
wait = yes
user = root //修改为你登录系统的用户名
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot -c // /tftpboot 为你存放TFTP的文件目录; -c参数允许上传(>可以创建文件)
per_source = 11
cps = 100 2
}
3. 重启TFTP服务
[zqq@ubuntu ~]# sudo service tftpd-hpa restart //重启服务器
[zqq@ubuntu ~]# sudo /etc/init.d/xinetd reload
[zqq@ubuntu ~]# sudo /etc/init.d/xinetd restart //重启xinetd,tftp的一个脚本
4. 测试
据说需要关闭防火墙, 由于没有开启, 不知道会出现什么情况:
# Ubuntu, 需要安装 ufw
sudo ufw disable
# 其他 Linux
/etc/init.d/iptables stop
复制一个文件到tftp服务器目录,然后在主机启动tftp软件,进行简单测试:
[zqq@ubuntu ~]# tftp 192.168.1.2
# 下载文件
tftp>get <download file>
# 上传文件
tftp>put <upload file>
# 退出
tftp>q
5. TFTP 基本使用
进入TFTP操作:
connect:连接到远程tftp服务器
mode:文件传输模式
put:上传文件
get:下载文件
quit:退出
verbose:显示详细的处理信息
tarce:显示包路径
status:显示当前状态信息
binary:二进制传输模式
ascii:ascii 传送模式
rexmt:设置包传输的超时时间
timeout:设置重传的超时时间
help:帮助信息
? :帮助信息
在 Busybox 中使用如下(其他桌面系统命令参数不一样,我的Ubuntu16.04就只适用get/put那种):
tftp [option] ... host [port]
[option]
-g 表示下载文件 (get)
-p 表示上传文件 (put)
-l 表示本地文件名 (local file)
-r 表示远程主机的文件名 (remote file)
以下是 tftp 快速上传下载命令使用:
# 1. 不更名上传下载(-gr/-gl | -pl/-pr),要从远程主机192.168.1.2上下载 tftp_test,则应输入以
下命令:
[root@ ~]# tftp -gr tftp_test 192.168.1.2
# 2. 从 192.168.1.2 下载文件 A.txt, 并更名为 B.txt (不更名就同名)
[root@ ~]# tftp -g -l B.txt -r A.txt 192.168.1.2
# 3. 上传文件 C.txt 到 192.168.1.2, 并更名为D.txt(不更名则C.txt)
[root@ ~]# tftp -p -r D.txt -l C.txt 192.168.1.2
6. 如果老是出现“AVC Denial, click icon to view”的错误,并不能传输文件,需要作如下修改
修改 /etc/sysconfig/selinux
, 将 SELINUX 设定为 disable,使用命令 setenforce 0
让 selinux 配置文件生效。
*关于上传失败的原因
出错: Error code 1: File not found
(可下载不能上传)
因为TFTP默认只允许下载文件,要上传文件,必须是服务器中已存在同名的文件,且该文件的权限允许被覆盖! -- HMK-Linux (tftp成功启动,get或put命令测试出现Error code 1: File not found)
所以在上传文件时, 需要先在 TFTP 目录下创建同名文件, 并且赋予可写的权限; 并且, 在配置 /etc/xinetd.d/tftp
文件时, server_args = -s /tftpboot -c
的 -c
必须要有(-c参数允许上传).
[reference]
[1] LoTGu. Ubuntu14.04环境下配置TFTP服务器. (2017-03-20 15:03) https://www.cnblogs.com/AP0904225/p/6589085.html
[2] linuxde.net. tftp命令[M]. http://man.linuxde.net/tftp
[3] believe209. tftp命令使用说明[M]. (2015年12月01日 15:03:12) http://blog.csdn.net/wangzhen209/article/details/50129275
[4] HMK-Linux. tftp成功启动,get或put命令测试出现Error code 1: File not found. (2011-12-05 17:09) http://forum.ubuntu.org.cn/viewtopic.php?t=324925