您的位置:首页 > 编程语言 > PHP开发

Ubuntu中安装tftp/tftp-hpa服务的方法

2012-10-01 00:04 447 查看
检查tftp是否已经安装:netstat -a | grep tftp 若出现:

udp 0 0 *:tftp 则说明已经安装,否则没有。

1、安装相关软件包

apt-get install tftpd (服务端)

apt-get install tftp (客户端)

apt-get install xinetd

2、建立配置文件

cd /etc/xinetd.d/

vi tftp

输入

service tftp

{

socket_type = dgram

protocol = udp

wait = yes

user = root

server = /usr/sbin/in.tftpd

server_args = -s /tftpboot

disable = no

per_source = 11

cps = 100 2

flags = IPv4

}

存盘退出

3、建立tftp服务文件目录

mkdir /tftpboot

4、从新启动服务

/etc/init.d/xinetd restart

安装完成!测试方法:

在/tftpboot 目录下随便放个文件abc

然后 运行tftp 192.168.123.202 进入tftp命令行

输入get abc 看看是不是能把文件下下来,如果可以就可以了,也可以put 文件上去。

检查tptp是否打开:chkconfig --list 如果没有打开,则用这个命令也可以打开:chkconfig tftp on

或者ps -A | grep tftp,看是否有tftpd的服务~

无意间看到这篇文章,觉得写的也挺好的,就一起贴在这里了~

原文地址:http://blog.csdn.net/wzyhb123456789/archive/2010/08/24/5835262.aspx

原文:

现在在研究SmartArm3250开发板,其中搭建Liunx平台时需要使用tftp传输Linux内核和文件系统到开发板,所以需要在电脑的Linux下先搭建一个tftp服务,通过看书和上网找资料,发现一些问题和需要注意的地方,而且很多东西是不适合ubuntu的,所以总结一下,实现说明,下面的操作在ubuntu10.04上是运行无误的,在其他操作系统上就不敢保证了。
一、安装tftp所需的软件。首先需要安装tftp-hpa,tftpd-hpa,前者是客户端,后者是服务程序,有些网站上说是安装tftp和tftpd,我实验了一下,至少在我这是没有实现后面的tftp传输的,而tftp-hpa与tftp是冲突的,tftpd-hpa与tftpd是冲突的,而带有-hpa的这两个是最新的,所以我就安装了这两个。在终端下输入 sudo apt-get install tftp-hpa tftpd-hpa,安装tftp-hpa和tftpd-hpa。然后还需要安装xinetd,按照网上的说法,这是一个守护进程,用于处理对各种服务的请求,在终端下输入
sudo apt-get install xinetd,安装好xinetd。//如果之前安装了tftp和tftpd,这时候系统会自动卸载它们~

二、配置相关服务文件。进入根目录下的etc文件夹(cd /etc/),首先看目录中有没有一个xinetd.conf文件,如果没有则新建一个,有的话查看内容,看是否与下面的一致,若不一致则修改,内容如下:

# Simple configuration file for xinetd

#

# Some defaults, and include /etc/xinetd.d/

defaults

{

# Please note that you need a log_type line to be able to use log_on_success

# and log_on_failure. The default is the following :

# log_type = SYSLOG daemon info

}

includedir /etc/xinetd.d

然后进入xinetd.d文件夹(cd xinetd.d),查看是否有一个tftp文件,如果没有就新建一个,如果有的话就查看内容是否与下面的一致,不一致则修改,内容如下:

service tftp

{

socket_type = dgram

wait = yes

disable = no

user = root

protocol = udp

server = /usr/sbin/in.tftpd

server_args = -s /home/tftpboot

log_on_success += PID HOST DURATION

log_on_failure += HOST

}

其中server_args一行是配置服务器的文件存放的位置,就是进行tftp传输的时候,都是从该文件夹中搜索文件的,上文中的/home/tftpboot是我自己设置的,你也可以设置成任意的地方。

三、修改所需文件夹的权限。需要修改的文件夹也就是上一步提到的那个服务器文件存放的文件夹,以我的配置文件为例,在/home下创建一个文件夹(sudo mkdir /home/tftpboot),然后把它可以设置成访问权限最宽松的(sudo chmod 777 /home/tftpboot),也可以设置成合适的权限。

四、重新启动服务。这也是我经常疏忽的一步,当配置好tftp的配置文件后,需要重新启动一下xinetd,在终端中输入 sudo /etc/init.d/xinetd reload,重新加载一下进程,再输入 sudo /etc/init.d/xinetd restart,重启服务。记住,每次修改完配置文件后,都需要重新启动一下服务。

通过以上四步就可以建立好tftp服务器了,可以在本地先进行一下测试。还是以我的配置文件为例,首先在/home/tftpboot中新建一个文件file,然后在其中随便输入内容;然后进入一个不是/home/tftpboot的目录下(原因是避免混淆,因为在获取文件是,默认是将想要获取的文件存放在当前目录下的);再在终端中输入 sudo tftp localhost,进入tftp命令符下(可以在其中输入help查看命令和命令的作用),输入 get file,如果没有任何提示,就说明传输成功了,然后输入
q 退出tftp命令符,在当前目录下就可以看到一个file文件,内容是与开始新建的那个file的内容是一致的。同样也可以在tftp命令符中输入 put xx,把xx文件上传到服务器文件夹中。如果一切ok,那就么一个可用的tftp服务器就顺利搭建成功了。

对于上面的测试是针对本地测试的,如果想要对其他电脑或者开发板进行tftp传输,则在终端输入 sudo tftp xxx(即目标电脑或目标开发板的ip地址),而且还要关闭ubuntu自带的防火墙(书上说的),我是直接把防火墙给卸载了(sudo apt-get remove iptables),因为我觉得对于Linux来说,防火墙可能没什么需要把,至少目前为止我还没有受到过攻击。。。当然,想要与其他局域网内的电脑或开发板互联进行传输,还要将这些机器的ip改到同一个段内。

好了,通过以上的步骤,就可以通过tftp协议,在电脑和开发板之间进行文件传输了,目前的目的就是下载Linux内核和文件系统到开发板。如果有朋友发现了我的不足,都可以给我提出来,我们也可以进行讨论。不过还要强调一点,我的这些配置都是针对于ubuntu的,对于其他的系统可能会有所出入的。

这个时候,如果出现Error code 1: File not found,那么就参考下面这篇文章~

原文地址:http://hi.baidu.com/571209683/blog/item/77b8a91ddaba71c4a6866911.html

原文://只摘了对上面错误有帮助的部分哈~

sudo gedit /etc/default/tftpd-hpa

# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"

TFTP_DIRECTORY="/tftpboot" //这里是你的tftpd-hpa的服务目录 //可以改成你想要的那个tftpboot

TFTP_ADDRESS="0.0.0.0:69"

TFTP_OPTIONS="-l -c -s" //这里是选项

注意:如果是在10.04以下的版本用下面的配置

tftp-hpa 的配置文件为 /etc/default/tftpd-hpa

RUN_DAEMON="yes"

OPTIONS="-l -c -s /tftpboot"

//记得要重启~

如果还是上面错误,就先把文件复制到/var/lib/tftpboot,再试下,如果成功,就要重启系统上面的配置才生效,以后就可以用你改得那个tftpboot了~如果还是不成功,我也米办法了~

到底上面2篇文章谁更准确,我也弄不清,等高手来解释吧~

再加上我整理的一些常见问题,关于tftp的就全了差不多~
现象一:

tftp>get file

Transfertimed out.

原因:

tftpd服务没有启动

现象二:

tftp>get file

Errorcode 2: Only absolute filenames allowed

原因:

在/etc/xinetd.d/tftpd中设置的server_args为/etc/default/tftpd-hpa

现象三:

tftp>put file

Errorcode 1: File not found

原因:

指定的文件不存在;或tftpd启动参数中没有指定-c选项,允许上传文件~上传的时候一定要确保文件先存在于上传~

参考了很多文章,就不一一列出了~

希望对别人有帮助~

====
http://hi.baidu.com/lru52777/item/c93ee017d092fcfbdceeca9d
--------

sudo apt-get install tftpd-hpa tftp-hpa

打开/etc/default/tftpd-hpa

修改设置如下:

#Defaults for tftpd-hpa

TFTP_USERNAME="root"

TFTP_DIRECTORY="/home/zdreamx/tftpboot"

TFTP_ADDRESS="0.0.0.0:69"

TFTP_OPTIONS="-l -s -c --secutre"

其中/home/zdreamx/tftpboot是自己设定的目录,可以根据情况修改。

选项参考

OPTIONS

-l Run the server in standalone (listen) mode, rather than run from

inetd. In listen mode, the -t option is ignored, and the -a

option can be used to specify a specific local address or port

to listen to.

-a [address][:port]

Specify a specific address and port to listen to when called

with the -l option. The default is to listen to the tftp port

specified in /etc/services on all local addresses.

listen 的 ip address 和 Port

-c Allow new files to be created. By default, tftpd will only

allow upload of files that already exist. Files are created

with default permissions allowing anyone to read or write them,

unless the -p or -U options are specified.

-s (决定tftp根目录)Change root directory on startup. This means the remote host

does not need to pass along the directory as part of the trans-

fer, and may add security. When -s is specified, exactly one

directory should be specified on the command line. The use of

this option is recommended for security as well as compatibility

with some boot ROMs which cannot be easily made to include a

directory name in its request.

启动:sudo service tftpd-hpa start

安装tftpd-hpa和tftpd-hpa

步骤:

1. sudo apt-get install tftp-hpa tftpd-hpa

2. cd /

sudo mkdir /tftpboot

sudo chmod 777 /tftpboot

3. sudo in.tftpd -l /tftpboot

这样tftp服务器就启动了,下面可以做一个测试

4. cd /tftpboot

touch test

建立一个文件

5. cd /home/usrname

登录另一个目录

6. tftp 192.168.0.59

换成自己的ip

> get /tftpboot/test

如果能够得到文件,那么就成功了。

安装过程中出现的问题及原因

现象一:

tftp> get test.log

Transfer timed out.

原因:

tftpd服务没有启动

现象二:

tftp> get test.log

Error code 2: Only absolute filenames allowed

原因:

在/etc/xinetd.d/tftpd中设置的server_args为/etc/default/tftpd-hpa

cat /etc/default/tftpd-hpa

#Defaults for tftpd-hpa

RUN_DAEMON="no"

OPTIONS="-s /home/tftpd -c -p -U 077 -u tftpd"

设置的时候只要将server_args=改为你自己设定的服务器文件夹就行了

现象三:

tftp> put ex070416.log

Error code 1: File not found

原因:

指定的文件不存在;或tftpd启动参数中没有指定-c选项,允许上传文件

====
http://www.360doc.com/content/10/0428/11/496343_25245558.shtml
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: