嵌入式开发之跨网络(远程)操作与文件共享

目录

  • SCP
      • 什么是SSH?
      • 为什么要使用SSH
      • SSH操作与示例:
      • SSH配置与调试
      • Bitvise客户端
  • NFS
      • NFS(Nework File-System)简介
      • NFS安装与配置
  • TFTP
      • 引用

SCP

什么是SSH?

  • Secure Shell的缩写,可以通过网络登陆远程系统。需要在远程系统安装SSH服务,在本地系统安装SSH客户端。

为什么要使用SSH

解决如下问题:

  • 使用或者维护不在本地的Linux主机;
  • 使用或者维护嵌入式Linux产品,不方便接调试串口;
  • 在远程机器和本地机器之间进行文件传输。

SSH操作与示例:

  • linux查看ssh服务的常用命令
    $ 4rpm -qa | grep ssh //可以看到系统中ssh安装包
    $ ps -ef | grep ssh // 查看ssh服务有没有运行,如果有,可以看到类似以下内容:
    $ root 2659 1 0 18:31 ? 00:00:00 /usr/sbin/sshd
    $ root 2702 2618 0 18:38 pts/0 00:00:00 grep ssh
    如果没有运行,可以通过以下命令运行之:
    $ service sshd start
    查看ssh服务的网络连接情况:
    $ netstat -ntlp
    如果看到如下内容:
    tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
    这说明sshd已经能够正常工作了,如果利用客户端(SecurCRT,putty等)连接不上, 尝试关闭防火 墙试试 : service iptables stop

SSH配置与调试

  • 安装SSL服务器(主机)
$ sudo apt install openssh-server

嵌入式开发之跨网络(远程)操作与文件共享_第1张图片

嵌入式开发之跨网络(远程)操作与文件共享_第2张图片

  • 克隆你的虚拟机(服务端)
    嵌入式开发之跨网络(远程)操作与文件共享_第3张图片

嵌入式开发之跨网络(远程)操作与文件共享_第4张图片

  • SSH安装服务器端(server)
sudo apt install openssh-server
  • IP设置方式:
$ sudo ifconfig eth0 192.168.1.128
  • bug
    Command 'ifconfig' not found, but can be installed with:sudo apt install net-tools

  • 安装网络配置工具

$ sudo apt install net-tools
  • bug!
    SIOCSIFADDR: No such device
    eth0: ERROR while getting interface flags: No such device
  • 查看所有网卡
$ ifconfig -a
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.128  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::9dcf:c37c:7fac:ba36  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:38:3c:9b  txqueuelen 1000  (Ethernet)
        RX packets 18027  bytes 14133887 (14.1 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 12010  bytes 2438066 (2.4 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 2779  bytes 308155 (308.1 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2779  bytes 308155 (308.1 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  • 发现没有eth0这个网卡,有ens33,输入:
sudo ifconfig ens33 192.168.1.128
  • windows下测试,关闭网络,打开cmd命令行,输入ping命令进行测试
> ping 192.168.1.128

嵌入式开发之跨网络(远程)操作与文件共享_第5张图片

  • linux下测试
$ ping 192.168.43.86  //windows'IP
PING 192.168.43.86 (192.168.43.86) 56(84) bytes of data.
64 bytes from 192.168.43.86: icmp_seq=1 ttl=128 time=0.690 ms
64 bytes from 192.168.43.86: icmp_seq=2 ttl=128 time=1.58 ms
64 bytes from 192.168.43.86: icmp_seq=3 ttl=128 time=0.701 ms
64 bytes from 192.168.43.86: icmp_seq=4 ttl=128 time=1.15 ms
64 bytes from 192.168.43.86: icmp_seq=5 ttl=128 time=1.26 ms
64 bytes from 192.168.43.86: icmp_seq=6 ttl=128 time=1.28 ms
64 bytes from 192.168.43.86: icmp_seq=7 ttl=128 time=0.729 ms
64 bytes from 192.168.43.86: icmp_seq=8 ttl=128 time=1.42 ms

Bitvise客户端

  • 下载Bitvise:(https://gsf-fl.softonic.com/7ad/b68/5b5d78c4e89613515d05ced58f7e6441dc/BvSshClient-Inst.exe?Expires=1648438562&Signature=8717178bf9438eb3d501410323d35c203b359299&url=https://tunnelier.en.softonic.com&Filename=BvSshClient-Inst.exe)
    嵌入式开发之跨网络(远程)操作与文件共享_第6张图片
    嵌入式开发之跨网络(远程)操作与文件共享_第7张图片

  • 设置Linux主机ip地址,输入用户名,输入密码,输入点击Log in

  • ssh-keygen

$ ssh-keygen -b 2048 -t rsa
$ chmod -R 700 .ssh
  • bug:一直登陆不上。
    检查用户名
$ whomi

嵌入式开发之跨网络(远程)操作与文件共享_第8张图片
嵌入式开发之跨网络(远程)操作与文件共享_第9张图片
嵌入式开发之跨网络(远程)操作与文件共享_第10张图片

成功登陆,可以实现文件传输与共享

NFS

NFS(Nework File-System)简介

  • 是Network FileSystem的缩写。最大的作用就是通过网络,让不同的机器、不同的作业系统、可以分享档案。通过将共享目录挂接到本地,就可以像操作本地目录一样去操作共享的目录。
  • 主机可以将自己某个指定目录通过网络共享给目标机。
  • 目标机可以直接运行存放于linux主机共享目录下的程序。

NFS安装与配置

安装NFS服务器端

$ sudo apt-get install nfs-kernel-server     

嵌入式开发之跨网络(远程)操作与文件共享_第11张图片

  • 可以通过运行以下命令来验证 :
$ sudo cat /proc/fs/nfsd/versions
-2 +3 +4 +4.1 +4.2

创建文件系统

  • 首先创建根目录和共享挂载点
$ sudo mkdir -p /srv/nfs4/www
  • 将挂载目录绑定到共享挂载点
$ sudo mount --bind /var/www /srv/nfs4/www
  • 要在重新启动后使绑定挂载永久化,请打开/etc/fstab文件(选做)
$ sudo vim /etc/fstab
  • 添加以下行
/etc/fstab
/var/www     /srv/nfs4/www      none   bind   0   0

嵌入式开发之跨网络(远程)操作与文件共享_第12张图片

导出文件系统

  • 打开/etc/exports文件
$ sudo vim /etc/exports
  • 添加以下行
/srv/nfs4         192.168.1.*(rw,sync,no_subtree_check,crossmnt,fsid=0)
/srv/nfs4/www     192.168.1.*(rw,sync,no_subtree_check)
  • 保存文件并导出共享
$ sudo exportfs -ar
  • 查看当前活动的导出及其状态
$ sudo exportfs -v
/srv/nfs4     	192.168.1.129(rw,wdelay,crossmnt,root_squash,no_subtree_check,fsid=0,sec=sys,rw,secure,root_squash,no_all_squash)
/srv/nfs4/www 	192.168.1.129(rw,wdelay,root_squash,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)

安装NFS客户端

  • 在客户机(克隆的虚拟机)安装输入
$ sudo apt update
$ sudo apt install nfs-common
  • 为挂载点创建两个新目录
$ sudo mkdir -p /srv/www
  • 使用以下命令挂载导出的文件系统mount
$ sudo mount -t nfs -o vers=4 192.168.1.128:/www /srv/www
  • bug
mount.nfs: requested NFS version or transport protocol is not supported
  • solve:
$ sudo /etc/init.d/nfs-kernel-server start
  • df 使用 mount 或命令验证远程文件系统是否已成功挂载
$ df -h
  • 要在重新启动时永久挂载,请打开/etc/fstab文件
$ sudo vim /etc/fstab
  • 添加以下行
/etc/fstab
192.168.1.128:/www /srv/www       nfs   defaults,timeo=900,retrans=5,_netdev	0 0
  • 可以查看主机文件
    嵌入式开发之跨网络(远程)操作与文件共享_第13张图片

TFTP

TFTP服务器

  • Trivial File Transfer Peotocol,TFTP是用来下载远程文件的最简单的网络协议,基于UDP协议。
  • 通常用于内核调试(另:网关、路由、交换机)
  • 在Bootloader中如果实现网关驱动和TFTP客户端,可以使用TFTP服务从主机上下载内核。
  • 安装TFTP服务器
$ sudo apt install -y tftpd-hpa 

TFTP服务器端

  • 配置TFTP服务器
$ sudo vim /etc/default/tftpd-hpa
/etc/default/tftpd-hpa
TFTP_USERNAME="tftp"    
TFTP_DIRECTORY="/tftp"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-l -c -s"      //tip:--list,--create,--secure
  • 创建文件目录
$ sudo mkdir /tftp
$ sudo chmod -R 777 /tftp
$ sudo chmod -R nobody /tftp
$ echo 'hello,world!' > /tftp/test.txt   //服务器创建测试文件
  • 启动服务器
$ sudo service tftpd-hpa start
$ sudo service tftpd-hpa status   //查看状态
  • bug!
Job for tftpd-hpa.service failed because the control process exited with error code. 
- $ sudo vim /etc/default/tftpd-hpa
/etc/default/tftpd-hpa
TFTP_USERNAME="tftp"    
TFTP_DIRECTORY="/tftp"         //地址确认!!!
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-l -c -s"      //tip:--list,--create,--secure

TPTP客户端

  • 安装TFTP客户端
$ sudo apt install -y tftp-hpa

嵌入式开发之跨网络(远程)操作与文件共享_第14张图片

测试连接

  • 客户端
$ tftp 192.168.1.128
tfpt> get test.txt
tftp> q
$ cat test.txt

嵌入式开发之跨网络(远程)操作与文件共享_第15张图片

引用

  • Bitvise连Linux服务器,完全可以代替putty_服务软件
  • 图解SSH原理
  • 如何在 Ubuntu 20.04 上安装和配置 NFS 服务器?
  • 如何在 Ubuntu 18.04 上安装和配置 NFS 服务器

你可能感兴趣的:(bash,linux,开发语言,服务器,ssh)