目前的方向是嵌入式方向,和板子打交道时必备的。这时候就需要烧写各种镜像。经常使用tftp和nfs服务,最近对ssh服务比较好奇,后续会继续补充。
目录
FTP服务
FTP服务介绍
FTP是File Transfer Protocol(文件传输协议)的英文简称。用于Internet上的控制文件的双向传输,同时它也是一个应用程序。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:”下载”(download)和”上传”(upload).”下载”文件就是从远程主机拷贝文件至自己的计算机上;”上传”就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可以通过客户机程序向(从)远程主机上传(下载)文件。——百科词条
FTP服务器
简单地说,支持FTP协议的服务器就是FTP服务器。
与大多数Internet服务一样,FTP也是一个客户机/服务器系统。用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器发出命令,服务器程序执行用户所发出的命令,并将执行结果返回到客户机上。比如,用户发出一条命令,要求服务器向用户传送某一个文件的一份拷贝,服务器会响应这条命令,将指定文件送至用户的机器上。客户机代表用户接收到这个文件,将其存放在用户目录中。——百科词条
匿名FTP服务
使用FTP时必须首先登录,在远程主机上获得相应的权限后,方可下载或上传文件。也就是说,要想同哪一台计算机传送文件,就必须具有那一台计算机的适当授权。也就是说,需要有用户ID和口令,否则便无法传送文件。这种情况违背了Internet的开放性,Internet上FTP主机非常多,不可能要求每个用户在每一台主机上都拥有账号。匿名FTP就是为解决这个问题而产生的。
匿名FTP,用户可通过它连接到远程主机上,并从其下载文件,而无需成为其注册用户。系统管理员建立一个特殊的用户ID,名为anonymous,Internet上的任何人在任何地方都可使用该用户ID。
通过FTP程序连接匿名FTP主机的方式同连接普通FTP主机的方式差不多,只是在要求提供用户标识ID时必须输入anonymous,该用户ID的口令可以是任意的字符串。习惯上,用自己的E-mail地址作为口令,使系统维护程序能够记录下来谁在存取这些文件。
值得注意的是,匿名FTP不适用于所有Internet主机,它只适用于那些提供了这项服务的主机。
当远程主机提供匿名FTP服务时,会指定某些目录向公众开放,允许匿名存取。系统中的其余目录则处于隐匿状态。作为一种安全措施,大多数匿名FTP主机都允许用户从其下载文件,而不允许用户向其上传文件。也就是说,用户可将匿名FTP主机上的所有文件全部拷贝到自己的机器上,但不能将自己机器上的任何一个文件拷贝至匿名FTP主机上。即使有些匿名FTP主机确实允许用户上传文件,用户也只能将文件上传至某一指定上传目录中。随后,系统管理员会去检查这些文件,他会将这些文件移至另一个公共下载目录中,供其他用户下载,利用这种方式,远程主机的用户得到了保护,避免了有人上传有问题的文件,如带病毒的文件。——百科词条
FTP使用方式
TCP/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20。需要进行远程文件传输的计算机必须安装和运行FTP客户程序。在windows操作系统的安装过程中,通常都安装tcp/ip协议软件,其中就包含ftp客户程序。也可以在地址栏中输入如下格式的URL地址:ftp://用户名:口令@ftp服务器域名:端口号/路径/路径
安装FTP服务
步骤1:安装 apt-get install vsftpd
步骤2:配置
cd /etc/vsftpd.conf
local_enable = yes #允许本地登录
write_enable = yes #允许上传文件
- 1
- 2
- 3
tftp服务
tftp服务介绍
TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务,端口号为69。
TFTP是一个传输文件的简单协议,基于UDP协议而实现。此协议设计的时候是进行小文件传输的。因此它不具备通常的FTP的许多功能,它只能从文件服务器上获得或写入文件,不能列出目录,不进行认证,它传输8为数据。——百度百科
安装tftp服务
步骤1:安装 apt-get install tftp-hpa tftpd-hpa
tftp-hpa是client,tftpd-hpaserver
步骤2:建立tftp目录
mkdir /tftpboot # 建立用于tftp的服务器目录
chmod 0777 /tftpboot
touch test.txt
- 1
- 2
- 3
步骤3:配置
vi /etc/default/tftpd-hpa
然后再tftpd-hpa文件中设置如下:
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftpboot" # 这是tftpd-hpa的服务目录 要和上面建立的服务器目录一样
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-l -c -s" # -c是可以上传文件
- 1
- 2
- 3
- 4
步骤4:重启服务
sudo service tftpd-hpa restart
# 启动服务
步骤5:测试
cd /home
tftp localhost #localhost表示本机
tftp>get test.txt #test.txt是之前在/tftpboot目录下建立的文件
tftp>put test1.txt #test1.txt是在/home目录下新建的文件
tftp>q
- 1
- 2
- 3
- 4
- 5
退出后,在/home目录下会有一个test.txt文件,在/tftpboot目录下会有test1.txt文件,表示tftp服务器安装成功
上述过程完全参考Linux公社的文章。链接
安装服务中遇到问题:
问题1:
结果终端提示:
无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)
E: 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?”
- 1
- 2
- 3
解决办法:
rm /var/cache/apt/archives/lock
rm /var/lib/dpkg/lock
- 1
- 2
参考链接
tftp开发板下载Ubuntu服务器文件目录
tftp -g -r xxx ipaddress
- 1
nfs服务
nfs服务介绍
nfs服务的主要功能是通过网络让不同的机器系统之间可以彼此共享文件和目录。nfs服务器可以允许nfs客户端将远端nfs服务器端的共享目录挂载到本地的nfs目录,比如下面我在本地主机上创建的/nfs目录。在本地的nfs客户端机器看来,nfs服务器端共享的目录就好像自己的磁盘分区和目录一样。——woshiliwentong 的BLOG
也就是,如果你有一块开发板,开启了nfs服务,就可以挂载服务器设置的共享目录到开发板上。开发板就是nfs客户端,Ubuntu就是nfs服务器。
比如:mount -t nfs 192.168.1.10:/root/rootfs /opt -o nolock
在开发板上执行:就是把Ubuntu(地址是192.168.1.10)下的/root/rootfs(我在Ubuntu上设置这个目录为nfs共享目录)挂载到开发板的/opt目录。
更为详细的参考链接
安装nfs服务
步骤1:安装 apt-get install nfs-kernel-server
步骤2:修改配置文件, 命令:vim /etc/exports
在文件最后添加:
/nfs *(rw,sync,no_root_squash,no_subtree_check)
其中:
/nfs 表示我创建的用于nfs的目录
* 表示允许所有的网段访问,也可以使用具体的IP
rw 表示挂接此目录的客户端对该共享目录具有读写权限
sync 表示资料同步写入内存和硬盘
no_root_squash 表示root用户对根目录的完全管理访问权限
no_subtree_check 不检查父目录的权限
注意:*和后面的括号都不能出现空格
步骤3:重启服务
1. sudo /etc/init.d/rpcbind restart
命令行信息:
[ ok ] Restarting rpcbind (via systemctl): rpcbind.service.
2. sudo /etc/init.d/nfs-kernel-server restart
命令行信息:
[ ok ] Restarting nfs-kernel-server (via systemctl): nfs-kernel-server.service.
步骤4:测试nfs服务是否成功
命令1:sudo /etc/init.d/nfs-kernel-server status
命令行信息:
● nfs-server.service - NFS server and services
Loaded: loaded (/lib/systemd/system/nfs-server.service; enabled; vendor preset: enabled)
Active: active (exited) since 二 2017-11-14 20:26:28 CST; 12s ago
Process: 5691 ExecStopPost=/usr/sbin/exportfs -f (code=exited, status=0/SUCCESS)
Process: 5687 ExecStopPost=/usr/sbin/exportfs -au (code=exited, status=0/SUCCESS)
Process: 5685 ExecStop=/usr/sbin/rpc.nfsd 0 (code=exited, status=0/SUCCESS)
Process: 5703 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=0/SUCCESS)
Process: 5700 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
Main PID: 5703 (code=exited, status=0/SUCCESS)
11月 14 20:26:28 lq-virtual-machine systemd[1]: Starting NFS server and services...
11月 14 20:26:28 lq-virtual-machine systemd[1]: Started NFS server and services.
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
命令2:sudo mount -t nfs localhost:/nfs /mnt
如果挂载成功,在mnt目录下创建a.txt,在nfs目录下也会对应有a.txt
取消挂载命令:sudo umount /mnt
参考链接
ssh服务
ssh服务介绍
SSH为Secure Shell的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH是目前较为可靠的,专为远程登录回话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄漏。
SSH是由客户端和服务器组成的软件。服务端是一个守护进程,在后台运行并响应来自客户端的连接请求。服务端一般是sshd进程,提供对远程连接的处理,一般包括公共密钥认证、密钥交换、对称密钥加密和非安全连接。客户端包含ssh程序以及像scp(远程拷贝)、slogin(远程登陆)、sftp(安全文件传输)等其他的应用程序。工作机制大致是本地的客户端发送一个连接请求到远程服务端,服务端检测申请的包和IP地址再发送密钥给ssh客户端,本地再将密钥发回给服务器,自此连接建立。——百度知道
和nfs服务的不同在,nfs服务是把主机Ubuntu上的一个nfs服务目录挂载到本地开发板上;而ssh服务是把开发板的整个目录挂载到主机上。一个简单的例子就是在windows下的secureCRT上使用ssh服务挂载Ubuntu的整个文件系统到secureCRT下,这样相当于在secureCRT下操作文件系统就和windows下操作文件系统一样了。
安装ssh服务
步骤1:安装ssh-server apt-get install openssh-server
步骤2:安装ssh-client apt-get install openssh-client
步骤3:确认ssh服务是否成功 ps -e|grep sshd
命令行信息:
6949 ? 00:00:00 sshd
看到sshd表明ssh-server启动了
步骤4:如果没有该信息 /etc/init.d/ssh start
命令行信息:
[ ok ] Starting ssh (via systemctl): ssh.service.
注意:ssh的远程登录工具访问服务器时,服务器默认端口是22。
参考链接
因为后面可能会用到ssh服务,而且其实以前搭建过ssh服务,但是感觉不好用,就没怎么用过了,现在看好像以前玩的太low了。以后要把后续的ssh服务连接secureCRT的过程添加上来。
总结:曾经有几个月的学习《计算机网络原理》的时间,我学完也没记笔记,等到我现在看到端口什么词语的时候,我只感到一点熟悉感。如果在给我一次机会,我会把我所学所想,都用博客记下来,如果给这个机会加一个期限,我希望是。。。