前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SSH 服务器、NFS 服务器、TFTP 服务器详解及测试

SSH 服务器、NFS 服务器、TFTP 服务器详解及测试

作者头像
Gnep@97
发布2023-08-10 10:13:47
4980
发布2023-08-10 10:13:47
举报
文章被收录于专栏:Gnep's_Technology_Blog

前言

本文详细介绍了 SSH、NFS、TFTP服务器,从用途、安装步骤、测试三个方面进行了讲解。

一、SSH 服务器

1、SSH 能做什么?

SSH 是 Secure Shell 的缩写,是建立在应用层和传输层基础上的安全协议,能够有效防止远程管理过程中的信息泄露问题。

SSH 实际上是一个 Shell,可以通过网络登录远程系统,当然,前提是远程系统已经开启了 SSH 服务。经常会遇到下列情形:

  • Linux 主机不在本地,但又要使用或者维护这台计算机;
  • 一个嵌入式 Linux 产品不方便接调试串口,需要进行维护;
  • 在远程机器和本地机器之间进行文件传输

如果远程目标系统已经开启了 SSH 服务,通过 SSH 可以轻松解决以上问题。 使用 SSH 服务,一方面需要在远程系统上安装 SSH 服务,另一方面要在本地系统上安装 SSH 客户端,常见的 SSH 客户端有 putty、 SSH Secure Shell Client 等。下面分别介绍。

注意,在本机安装了虚拟机,也可以将虚拟机的 Linux 认为是远程系统。若使用 SSH 客户端软件登录虚拟机中的 Linux 系统,必须配臵虚拟机的以太网连接方式为 Bridged(桥接)模式,同时电脑的物理网卡必须接到网络,否则客户端将无法连接 SSH 服务器。

2、安装 SSH 服务器

在 Linux 主机输入下面命令安装 ssh 服务器:

代码语言:javascript
复制
sudo apt-get install openssh-server
在这里插入图片描述
在这里插入图片描述

3、测试 SSH 服务

在虚拟机里, VMware 虚拟网卡设置为 NAT 模式的话, Linux 系统网卡设置为动态 IP即可;如果虚拟网卡设置为桥接模式,则需要为 Linux 设置一个与 Windows 系统同一个网段的静态 IP 地址。

静态 IP 设置方法,可以在图形界面进入系统设置,选择网卡设置, IPV4 设置为“手动”,并在地址栏填写 IP 地址、掩码等信息,参考下图。

在这里插入图片描述
在这里插入图片描述

当然,也可以在终端使用 ifconfig 命令进行设置

只有知道了 Linux 主机的 IP 地址后,才能进行 SSH 连接。如果不能确定 IP 地址,可以打开终端,用 ifconfig 命令进行查看和确认:

代码语言:javascript
复制
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 地址。

4、用 SecureCRT 测试

①、新建一个 Session,选择 SSH2

在这里插入图片描述
在这里插入图片描述

②、输入虚拟机的 ip 地址

在这里插入图片描述
在这里插入图片描述

③、选择 Accept & Save

在这里插入图片描述
在这里插入图片描述

④、输入用户名和密码

在这里插入图片描述
在这里插入图片描述

⑤、ls 查看

在这里插入图片描述
在这里插入图片描述

二、NFS 服务器

1、NFS 能做什么?

  • 在嵌入式 Linux 开发中,需要在 Linux 主机为目标机编写程序代码,然后编译程序,生成的程序是要传输到目标机上才能调试、运行。那么如何更快、更便捷地传输文件,将影响到开发工作的效率。 NFS 无疑是最好的选择。通过 NFS 服务,主机可以将自己系统中某个指定目录通过网络共享给目标机(和 Windows 的文件网络共享类似)。目标机可以直接运行存放于 Linux 主机共享目录下的程序。这样调试程序时十分方便。
  • NFS 即网络文件系统(Network File-System),可以通过网络让不同机器、不同系统之间可以实现文件共享。通过 NFS,可以访问远程共享目录,就像访问本地磁盘一样。 NFS 只是一种文件系统,本身并没有传输功能,是基于 RPC(远程过程调用) 协议实现的,采用 C/S 架构。接下来将介绍如何在 ubuntu 系统中开启 NFS 服务器功能,使得开发套件能共享 ubuntu 系统的指定目录。

2、安装 NFS 软件包

在 ubuntu 终端输入下面命令安装 NFS 服务器:

代码语言:javascript
复制
sudo apt-get install nfs-kernel-server #安装 NFS 服务器端
sudo apt-get install nfs-common #安装 NFS 客户端
在这里插入图片描述
在这里插入图片描述

3、添加 NFS 共享目录

安装完 NFS 服务器等相关软件后,需要指定用于共享的 NFS 目录,其方法是在 “/etc/exports” 文件里面设置对应的目录及相应的访问权限,每一行对应一个设置。下面介绍如何添加 NFS 共享目录。

在终端输入“sudo vi /etc/exports”指令,如下所示:

代码语言:javascript
复制
sudo vi /etc/exports

“/etc/exports” 文件打开后, 文件内容如下所示。

代码语言:javascript
复制
# /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 共享目录,请在该文件末尾添加下面的一行:

代码语言:javascript
复制
/nfsroot *(rw,sync,no_root_squash)

其中“*”表示允许任何网段 IP 的系统访问该 NFS 目录。添加完成后,文件内容如下所示。

代码语言:javascript
复制
# /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”目录,并为该目录设置最宽松的权限:

代码语言:javascript
复制
sudo mkdir /nfsroot
sudo chmod -R 777 /nfsroot
sudo chown –R nobody /nfsroot

为了方便测试 NFS 是否挂载成功,可以在“/nfsroot”目录下创建 NFS_Test 目录用于测试。

在这里插入图片描述
在这里插入图片描述

4、启动 NFS 服务

在终端中执行如下命令,可以启动 NFS 服务:

代码语言:javascript
复制
sudo /etc/init.d/nfs-kernel-server start
在这里插入图片描述
在这里插入图片描述

执行如下命令则可以重新启动 NFS 服务,也可以通过重启 ubuntu 来实现:

代码语言:javascript
复制
sudo /etc/init.d/nfs-kernel-server restart
在这里插入图片描述
在这里插入图片描述

在 NFS 服务已经启动的情况下,如果修改了“/etc/exports” 文件,需要重启 NFS 服务,以刷新 NFS 的共享目录。 当然在下一次启动系统时, NFS 服务是自动启动的。

5、测试 NFS 服务器

NFS 服务启动后,可以在 Linux 主机上进行自测。自测的基本方法为:将已经设定好的 NFS 共享目录 mount(挂载) 到另外一个目录下,看能否成功。Linux 主机 IP 为 192.168.25.25,其 NFS 共享目录为/nfsroot, 可使用如下命令进行测试:

代码语言:javascript
复制
sudo mount -t nfs 192.168.25.25:/nfsroot /mnt -o nolock
在这里插入图片描述
在这里插入图片描述

如果指令运行没有出错,则 NFS 挂载成功,在主机的 /mnt 目录下应该可以看到 /nfsroot 目录下的内容(即之前创建的 NFS_Test 目录)。 此外,也可以使用开发板进行挂载测试,此时需要在开发套件上输入如下指令:

代码语言:javascript
复制
mount -t nfs 192.168.25.25:/nfsroot /mnt -o nolock
cd /mnt
ls
在这里插入图片描述
在这里插入图片描述

若挂载成功,在开发套件的/mnt 目录下也可以看见 NFS_Test 目录。之后,开发套件就可以像操作本地目录一样去操作主机的/nfsroot 目录。注意,要想成功地挂载 NFS 目录,开发套件必须要先确保与主机之间的网路是畅通的,可以使用 ping 命令进行测试:

代码语言:javascript
复制
ping 192.168.25.25
在这里插入图片描述
在这里插入图片描述

如果无法 ping 通主机,则需要先仔细检查网络连接与设定。 此外,在 mount 与 umount(解除挂载)操作时,用户的当前路径不能是操作的目标路径。 例如下面两条指令就是错误的,用户当前所处的路径与要 mount(或 umount)的目标路径相同:

代码语言:javascript
复制
pwd
mount -t nfs 192.168.25.25:/nfsroot /mnt -o nolock		# 错误 
umount /mnt												# 错误
在这里插入图片描述
在这里插入图片描述

三、TFTP 服务器

1、TFTP 能做什么?

*TFTP(Trivial File Transfer Protocol,简单文件传输协议),是 TCP/IP 协议族中用来在客户机和服务器之间进行简单文件传输的协议,开销很小。

这时候有人可能会纳闷,既然前面已经介绍了功能强大的 SSH 和 NFS 服务,还有必要介绍 TFTP 吗? TFTP 尽管简单,但在很多地方还是不可替代的,正如俗话说的“尺有所短,寸有所长”。

TFTP 通常用于内核调试。在嵌入式 Linux 开发过程中,内核调试是其中一个基础、重要的环节。调试内核通常是与 Bootloader 配合使用,只需在嵌入式系统的 Bootloader 中实现网卡驱动和 TFTP 客户端,就可以使用 TFTP 服务从主机上下载内核。

主机要开启 TFTP 服务,必须要先安装 TFTP 服务器软件,可以在 Linux 下实现,也可以在 Windows 下实现。

2、安装配置 TFTP 软件

用户可以在主机系统联网的情况下,在终端输入下面命令进行安装:

代码语言:javascript
复制
sudo apt-get install tftpd-hpa tftp-hpa

软件安装成功后,终端显示如下图所示。

在这里插入图片描述
在这里插入图片描述

3、配置 TFTP 服务器

TFTP 软件安装后,默认是关闭 TFTP 服务的,需要更改 TFTP 配置文件 “/etc/default/tftp-hpa”,可通过终端输入如下命令进行修改:

代码语言:javascript
复制
sudo vi /etc/default/tftpd-hpa

用户需要指定一个目录为 TFTP 根目录。若用户需要把 /tftpboot 目录设置为 TFTP 根目录,请在 /etc/default/tftp-hpa 文件中的“ TFTP_DIRECTORY” 变量指定, 如下所示:

在这里插入图片描述
在这里插入图片描述

如果用户的 Linux 系统下尚未创建/tftpboot 目录, 需要创建该目录,并需要使用 chmod 命令为该目录设置最宽松的权限。目录创建及权限设置命令如下所示:

代码语言:javascript
复制
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 放在某个文件夹下并运行即可。

4、启动 TFTP 服务

①、TFTP 服务器安装配置完成后, 启动 TFTP 服务的终端命令如下:

代码语言:javascript
复制
sudo service tftpd-hpa start
在这里插入图片描述
在这里插入图片描述

当然直接重启系统也可以启动 TFTP 服务。

②、重启 TFTP 服务的终端命令如下:

代码语言:javascript
复制
sudo service tftpd-hpa restart

5、测试 TFTP 服务器

①、在 TFTP 服务器目录/tftpboot 下创建一个测试文件 tftpTestFile:

代码语言:javascript
复制
touch /tftpboot/tftpTestFile
echo "Hello,can you see me?" > /tftpboot/tftpTestFile
cat /tftpboot/tftpTestFile
在这里插入图片描述
在这里插入图片描述

②、测试文件准备好了之后,打开终端,输入以下测试命令(在 Linux 系统中 localhost 表示本地主机):

代码语言:javascript
复制
tftp localhost
get tftpTestFile	# 如果测试失败会打印出错信息
q
cat /tftpboot/tftpTestFile
在这里插入图片描述
在这里插入图片描述

至此, TFTP 服务器已经配置并测试成功,若用户操作结果与上述现象不同,则需要检查相关操作步骤是否按照文档步骤操作。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-04-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 一、SSH 服务器
    • 1、SSH 能做什么?
      • 2、安装 SSH 服务器
        • 3、测试 SSH 服务
          • 4、用 SecureCRT 测试
          • 二、NFS 服务器
            • 1、NFS 能做什么?
              • 2、安装 NFS 软件包
                • 3、添加 NFS 共享目录
                  • 4、启动 NFS 服务
                    • 5、测试 NFS 服务器
                    • 三、TFTP 服务器
                      • 1、TFTP 能做什么?
                        • 2、安装配置 TFTP 软件
                          • 3、配置 TFTP 服务器
                            • 4、启动 TFTP 服务
                              • 5、测试 TFTP 服务器
                              相关产品与服务
                              腾讯云服务器利旧
                              云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
                              领券
                              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档