TFTP(Trivial File Transfer Protocol)是用来下载远程文件的最简单的网络协议,它基于UDP协议而实现.
一、安装:
sudo apt-get install tftp-hpa tftpd-hpa
tftp-hpa 为客户端,tftpd-hpa 为服务端。
二、配置:
修改tftpd-hpa相应的配置文件
sudo vi /etc/default/tftpd-hpa
原始的内容如下:
#/etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/svr/tftp"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="--secure"
修改后:
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/svr/tftp"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="-l -c -s"
说明:
TFTP_USERNAME:tftp帐号,
TFTP_DIRECTORY:tftp根目录,
TFTP_ADDRESS:地址与端口号,
TFTP_OPTIONS:启动参数,(可通过命令 man tftpd,查看各种参数含义)
-l:以standalone/listen模式启动TFTP服务(--listen),不用安装网络守护进程服务程序xinetd。
-c:可上传创建新文件(--create)。默认情况下,TFTP只允许覆盖原有文件,不能创建新文件。
-s:改变TFTP启动的根目录(--secure)。为了安全性和兼容性,使用一些引导rom,很难在请求中包含目录名。
三、修改TFTP根目录():
如果没有则建立TFTP目录 /var/tftp,以供上传和下载。修改目录所有者;设定该目录的权限,一般就将其权限设置为最高,为所有用户组都添加所有权限(读+写+执行=4+2+1=7):
$ sudo chown tftp:tftp /srv/tftp
sudo mkdir /var/tftp
sudo chmod 777 tftp
四、重启tftpd-hpa服务:
sudo service tftpd-hpa restart
五、查看TFTP服务状态
$ ps aux|grep tftp
root 5070 0.0 0.0 3068 680 ? Ss 10:59 0:00 /usr/sbin/in.tftpd --listen --user tftp --address :69 --secure --create /var/tftpboot
可以看到, /usr/sbin/in.tftpd已经启动,进程号:5070,以及对应参数
六、使用:
1、linux环境:
xxx@xxx-virtual-machine:~$ tftp 127.0.0.1
tftp> help
tftp-hpa 5.2
Commands may 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
tftp>
2、windows环境:
控制面板中,启用TFTP客户端,并在防火墙中放行(C:\Windows\System32\TFTP.EXE)。
C:\Users\Administrator>tftp
向运行 TFTP 服务的远程计算机传入或从该计算机传出文件。
TFTP [-i] host [GET | PUT] source [destination]
-i 指定二进制映像传输模式(也称为
八进制)。在二进制映像模式中,逐字节地
移动文件。在传输二进制文件时,
使用此模式。
host 指定本地或远程主机。
GET 将远程主机上的文件目标传输到
本地主机的文件源中。
PUT 将本地主机上的文件源传输到
远程主机上的文件目标。
source 指定要传输的文件。
destination 指定要将文件传输到的位置。
C:\Users\Administrator>tftp -i 192.168.1.100 get test.bin