UBUNTU tftp 配置
1:sudo apt-get install tftp tftpd openbsd-inetd
apt-get install tftpd-hpa
apt-get install xinetd
特别指出很多文章里用的是netkit-inetd,但是实际下载时发现
这个软件是下不到的,特改用openbsd-inetd,实验效果不错。
2:在根目录下创建文件夹 tftpboot
cd /
sudo mkdir tftpboot 建立文件夹
sudo chmod 777 tftpboot 更改文件夹权限
3: sudo gedit /etc/inetd.conf 修改成如下样子
注释掉上面一句,不然TFTP启动又从上个命令开始
#tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd
tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /home/andy/workspace/tftpboot
4: sudo gedit /etc/xinetd.d/tftp 修改成如下样子(如果没有tftp文件就创建它)(如果没有xinetd,是没有安装xinetd)
service tftp
{
disable =no
socket_type =dgram
protocol =udp
wait =yes
user =root
server =/usr/sbin/in.tftpd
server_args =-s /home/andy/workspace/tftpboot -c(/tftpboot是tftp服务器建立的文件夹位置。如果不是根目录建立的需要修改路径)
source = 11
cps = 100 2
}
5: sudo gedit /etc/default/tftpd-hpa 修改成如下样子
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
#TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_DIRECTORY="/home/andy/workspace/tftpboot"(/tftpboot是tftp服务器建立的文件夹位置。如果不是根目录建立的需要修改路径)
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-l -c -s"
6:sudo /etc/init.d/openbsd-inetd reload
sudo /etc/init.d/xinetd restart
sudo in.tftpd -l /tftpboot
7: 在tftpboot文件夹下新建测试文件 aaa
cd /tftpboot
sudo touch aaa
sudo chmod 777 aaa
9:lsof -i:69 查看tftp状态
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
in.tftpd 1071 root 4u IPv4 8971 0t0 UDP *:tftp
如果显示时IPV6那么配置上就有问题,需要检测配置项。
10: 开始测试tftp服务
cd /home
tftp 192.168.14.74
sudo /etc/init.d/xinetd restart
至此Ubuntu tftp服务已经安装完成了,下面可以对其进行一下测试。(假设在当前目录下有一个测试文件test.txt)
$tftp 127.0.0.1
tftp> put test.txt
Sent 1018 bytes in 0.0 seconds
tftp> get test.txt
Received 1018 bytes in 0.1 seconds
tftp> quit
通过get命令,可以把当前目录下的test.txt文件,通过Ubuntu tftp上传到它的服务文件目录。这时,在/tftpboot下面会出现test.txt文件。通过put命令,可以从/tftpboot下,下载test.txt文件。这样就验证了Ubuntu tftp服务配置的正确性。当文件上传与下载结束后,可以通过quit命令退出。严格按照以上步骤配置Ubuntu tftp服务,一般都可以成功。如果出现无法get或者put的时候,可以查看一下防火墙是否关闭。
注意: 1:如果出现permission denied 错误 则是操作者权限不够,
需要提升权限
su root
输入密码后就可以正常进行tftp传输操作了
2:如果出现Access violation错误 则是文件权限没有解开,
将要操作的文件操作权限全解开就可以了
chmod 777 文件名
tftp> get file
Transfer timed out.
原因:
tftpd服务没有启动,可能是配置上有问题(检测配置参数)。
解决方法:启动服务
sudo /etc/init.d/xinetd restart
sudo /etc/init.d/tftpd-hpa restart
现象二:
tftp> get file
Error code 2: Only absolute filenames allowed
原因:
在/etc/xinetd.d/tftpd中设置的server_args为/etc/default/tftpd-hpa
下面是我的机器上/etc/default/tftpd-hpa配置
# /etc/default/tftpd-hpa
RUN_DAEMON="yes"
TFTP_ADDRESS="0.0.0.0:69"
OPTIONS="-s /home/tftpd -c -p -U 077 -u tftpd"
现象三:
tftp> put file
Error code 1: File not found
原因:
指定的文件不存在;或tftpd启动参数中没有指定-c选项,允许上传文件~上传的时候一定要确保文件先存在于上传目录下。
现象四:
tftp> get file
tftp: : Permission denied
原因:权限不足
请查看chmod 是不是配置好