本文详细介绍了 SSH、NFS、TFTP服务器,从用途、安装步骤、测试三个方面进行了讲解。
SSH 是 Secure Shell 的缩写,是建立在应用层和传输层基础上的安全协议,能够有效防止远程管理过程中的信息泄露问题。
SSH 实际上是一个 Shell,可以通过网络登录远程系统,当然,前提是远程系统已经开启了 SSH 服务。经常会遇到下列情形:
如果远程目标系统已经开启了 SSH 服务,通过 SSH 可以轻松解决以上问题。 使用 SSH 服务,一方面需要在远程系统上安装 SSH 服务,另一方面要在本地系统上安装 SSH 客户端,常见的 SSH 客户端有 putty、 SSH Secure Shell Client 等。下面分别介绍。
注意,在本机安装了虚拟机,也可以将虚拟机的 Linux 认为是远程系统。若使用 SSH 客户端软件登录虚拟机中的 Linux 系统,必须配臵虚拟机的以太网连接方式为 Bridged(桥接)模式,同时电脑的物理网卡必须接到网络,否则客户端将无法连接 SSH 服务器。
在 Linux 主机输入下面命令安装 ssh 服务器:
sudo apt-get install openssh-server
在虚拟机里, VMware 虚拟网卡设置为 NAT 模式的话, Linux 系统网卡设置为动态 IP即可;如果虚拟网卡设置为桥接模式,则需要为 Linux 设置一个与 Windows 系统同一个网段的静态 IP 地址。
静态 IP 设置方法,可以在图形界面进入系统设置,选择网卡设置, IPV4 设置为“手动”,并在地址栏填写 IP 地址、掩码等信息,参考下图。
当然,也可以在终端使用 ifconfig 命令进行设置
只有知道了 Linux 主机的 IP 地址后,才能进行 SSH 连接。如果不能确定 IP 地址,可以打开终端,用 ifconfig 命令进行查看和确认:
ifconfig
进行 SSH 连接之前, 最好先用 ping 命令测试 Windows 和 Linux 之间能否正常通信。可以在Windows,打开 cmd 命令行,输入 ping 命令进行测试,例如测试 IP 为 192.168.137.128 的 Linux 主机,能收到回应帧表示通信正常,如下图所示。
也可以在 Linux 下打开终端,用 ping 命令 ping Windows 主机,收到回应帧表示测试正常,如下图所示。
注意: Windows 默认打开了系统防火墙,会过滤掉 ping 请求。 如果在 Linux 下 ping Windows ,需要先关闭 Windows 的防火墙。另外, Windows 也需要设臵静态的 IP 地址。
①、新建一个 Session,选择 SSH2
②、输入虚拟机的 ip 地址
③、选择 Accept & Save
④、输入用户名和密码
⑤、ls 查看
在 ubuntu 终端输入下面命令安装 NFS 服务器:
sudo apt-get install nfs-kernel-server #安装 NFS 服务器端
sudo apt-get install nfs-common #安装 NFS 客户端
安装完 NFS 服务器等相关软件后,需要指定用于共享的 NFS 目录,其方法是在 “/etc/exports” 文件里面设置对应的目录及相应的访问权限,每一行对应一个设置。下面介绍如何添加 NFS 共享目录。
在终端输入“sudo vi /etc/exports”指令,如下所示:
sudo vi /etc/exports
“/etc/exports” 文件打开后, 文件内容如下所示。
# /etc/exports: the access control list for filesystems which may be exported
# to NFS clients. See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check)
#
若需要把“/nfsroot”目录设置为 NFS 共享目录,请在该文件末尾添加下面的一行:
/nfsroot *(rw,sync,no_root_squash)
其中“*”表示允许任何网段 IP 的系统访问该 NFS 目录。添加完成后,文件内容如下所示。
# /etc/exports: the access control list for filesystems which may be exported
# to NFS clients. See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check)
#
/nfsroot *(rw,sync,no_root_squash)
修改完成后, 保存并退出“/etc/exports” 文件。然后新建“/nfsroot”目录,并为该目录设置最宽松的权限:
sudo mkdir /nfsroot
sudo chmod -R 777 /nfsroot
sudo chown –R nobody /nfsroot
为了方便测试 NFS 是否挂载成功,可以在“/nfsroot”目录下创建 NFS_Test 目录用于测试。
在终端中执行如下命令,可以启动 NFS 服务:
sudo /etc/init.d/nfs-kernel-server start
执行如下命令则可以重新启动 NFS 服务,也可以通过重启 ubuntu 来实现:
sudo /etc/init.d/nfs-kernel-server restart
在 NFS 服务已经启动的情况下,如果修改了“/etc/exports” 文件,需要重启 NFS 服务,以刷新 NFS 的共享目录。 当然在下一次启动系统时, NFS 服务是自动启动的。
NFS 服务启动后,可以在 Linux 主机上进行自测。自测的基本方法为:将已经设定好的 NFS 共享目录 mount(挂载) 到另外一个目录下,看能否成功。Linux 主机 IP 为 192.168.25.25,其 NFS 共享目录为/nfsroot, 可使用如下命令进行测试:
sudo mount -t nfs 192.168.25.25:/nfsroot /mnt -o nolock
如果指令运行没有出错,则 NFS 挂载成功,在主机的 /mnt 目录下应该可以看到 /nfsroot 目录下的内容(即之前创建的 NFS_Test 目录)。 此外,也可以使用开发板进行挂载测试,此时需要在开发套件上输入如下指令:
mount -t nfs 192.168.25.25:/nfsroot /mnt -o nolock
cd /mnt
ls
若挂载成功,在开发套件的/mnt 目录下也可以看见 NFS_Test 目录。之后,开发套件就可以像操作本地目录一样去操作主机的/nfsroot 目录。注意,要想成功地挂载 NFS 目录,开发套件必须要先确保与主机之间的网路是畅通的,可以使用 ping 命令进行测试:
ping 192.168.25.25
如果无法 ping 通主机,则需要先仔细检查网络连接与设定。 此外,在 mount 与 umount(解除挂载)操作时,用户的当前路径不能是操作的目标路径。 例如下面两条指令就是错误的,用户当前所处的路径与要 mount(或 umount)的目标路径相同:
pwd
mount -t nfs 192.168.25.25:/nfsroot /mnt -o nolock # 错误
umount /mnt # 错误
*TFTP(Trivial File Transfer Protocol,简单文件传输协议),是 TCP/IP 协议族中用来在客户机和服务器之间进行简单文件传输的协议,开销很小。
这时候有人可能会纳闷,既然前面已经介绍了功能强大的 SSH 和 NFS 服务,还有必要介绍 TFTP 吗? TFTP 尽管简单,但在很多地方还是不可替代的,正如俗话说的“尺有所短,寸有所长”。
TFTP 通常用于内核调试。在嵌入式 Linux 开发过程中,内核调试是其中一个基础、重要的环节。调试内核通常是与 Bootloader 配合使用,只需在嵌入式系统的 Bootloader 中实现网卡驱动和 TFTP 客户端,就可以使用 TFTP 服务从主机上下载内核。
主机要开启 TFTP 服务,必须要先安装 TFTP 服务器软件,可以在 Linux 下实现,也可以在 Windows 下实现。
用户可以在主机系统联网的情况下,在终端输入下面命令进行安装:
sudo apt-get install tftpd-hpa tftp-hpa
软件安装成功后,终端显示如下图所示。
TFTP 软件安装后,默认是关闭 TFTP 服务的,需要更改 TFTP 配置文件 “/etc/default/tftp-hpa”,可通过终端输入如下命令进行修改:
sudo vi /etc/default/tftpd-hpa
用户需要指定一个目录为 TFTP 根目录。若用户需要把 /tftpboot 目录设置为 TFTP 根目录,请在 /etc/default/tftp-hpa 文件中的“ TFTP_DIRECTORY” 变量指定, 如下所示:
如果用户的 Linux 系统下尚未创建/tftpboot 目录, 需要创建该目录,并需要使用 chmod 命令为该目录设置最宽松的权限。目录创建及权限设置命令如下所示:
sudo mkdir /tftpboot
sudo chmod -R 777 /tftpboot
sudo chown -R nobody /tftpboot
说明: 在 Windows 下, 通过 tftpd32.exe(下载地址: [http://tftpd32.jounin.net](http://tftpd32.jounin.net)) 可以很便捷的实现一个 TFTP 服务器, 只需将 tftpd32.exe 放在某个文件夹下并运行即可。
①、TFTP 服务器安装配置完成后, 启动 TFTP 服务的终端命令如下:
sudo service tftpd-hpa start
当然直接重启系统也可以启动 TFTP 服务。
②、重启 TFTP 服务的终端命令如下:
sudo service tftpd-hpa restart
①、在 TFTP 服务器目录/tftpboot 下创建一个测试文件 tftpTestFile:
touch /tftpboot/tftpTestFile
echo "Hello,can you see me?" > /tftpboot/tftpTestFile
cat /tftpboot/tftpTestFile
②、测试文件准备好了之后,打开终端,输入以下测试命令(在 Linux 系统中 localhost 表示本地主机):
tftp localhost
get tftpTestFile # 如果测试失败会打印出错信息
q
cat /tftpboot/tftpTestFile
至此, TFTP 服务器已经配置并测试成功,若用户操作结果与上述现象不同,则需要检查相关操作步骤是否按照文档步骤操作。