嵌入式Linux开发的一个文件传输技巧
嵌入式Linux开发的一个文件传输技巧
说明
最近在开发嵌入式Linux设备的时候偶然想到的,之前遇到过很多的板子,板子和电脑主机(Windows/Linux)传输文件的方式大多是以下几种
- rz/sz:串口传输
- nfs:网络文件系统挂载
- U盘
至于其他小众的smb啊之类的场景太局限,今天又发现可一种可行的比较普适的方案,就是使用ssh。
使用ssh工具进行嵌入式设备的文件传输
环境要求
电脑主机端:Windows/Linux
- Windows:安装git,git-bash里面有完整的sshd支持
- Linux:安装openSSH Serve
上述都不是一件难事,只需要确认能够把sshd跑起来就行
嵌入式设备端: Linux
- 只需要在嵌入式设备端内有ssh工具即可,基本上都会带有的。
连通性
所谓连通性就是主机和嵌入式设备能够ping通,这个很简单,直接使用ifconfig配置嵌入式设备端的对应端口的ip和主机在同一网段即可:
ifconfig 端口 192.168.xxx.xxx
然后直接pingping通即可。
操作步骤
主机端
Windows
打开git-bash,进入控制台,首先确保hostkey存在
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
直接默认全部回车,秘钥就会生成,然后直接运行sshd
/usr/bin/sshd.exe
如果没有任何报错输出即为运行成功,用户名是当前用户名,即git-bash控制台每行输出提示符@前面的字样,密码为登录密码。
Linux
linux端则方便很多,以Ubuntu为例,直接使用Service或者Systemctl进行启用即可
systemctl sshd start
嵌入式设备端
只要能够通过ssh连接到主机端及说明链路生效,就是尝试直接登录主机。
ssh 主机用户名@主机ip
能登录上就 exit
退出,然后我们就可以开始文件传输了
文件传输
此时进行文件传输只需要使用 scp
命令即可,通过嵌入式端去获取主机端的文件的命令就是:
scp 主机用户@主机ip:主机文件位置 /嵌入式端存放文件位置
- 主机文件位置建议使用
~/
开始的个人用户目录起始,这样比较明确。 - 如果想拷贝文件夹的话则在命令最后添加
-r
参数即可,表示遍历拷贝。
OK,这个就是新的文件传输的思路,不需要配置很多的东西,git的话在主机端平时也会有(windows大家都有用git的吧,不是吧不是吧,竟然有公司不用git?[不是]),网线的话也是直接扯一根插上就用的,所以还是挺方便的。