OpenHarmony 集成ssh服务器 Dropbear
ssh是一个常见的、可靠的远程终端/文件传输的协议,OpenHarmony本身并没有ssh服务器的功能。
为了启用ssh功能,我们需要引入一个第三方软件 Dropbear
Dropbear是什么
Dropbear是由Matt Johnston所开发的Secure Shell软件(包括服务端与客户端)。
期望在存储器与运算能力有限的情况下取代OpenSSH,尤其是嵌入式系统。
通俗来说,dropbear是一个ssh服务器的实现软件,同时具有ssh客户端的功能。
dropbear通常在嵌入式Linux上运行,例如大名鼎鼎的OpenWRT默认的ssh的服务器和客户端正是dropbear。
为什么需要使用Dropbear
OpenHarmony默认使用HDC作为调试工具,类似于Android平台的adb。
计算机通过USB线缆连接OpenHarmony设备。可以实现执行命令、文件上传、文件下载等功能。
一般情况下HDC足够大多数人的需求。但你如果更喜欢使用ssh协议,或者有更多高级需求例如
- 基于网络进行连接,支持密码认证,提供安全可信的加密通道
- 在多台开发机或设备上同时连接OpenHarmony设备
- 使用WinSCP软件可视化的进行文件浏览、上传、下载
那么为OpenHarmony设备安装Dropbear将是一个更好的选择。
集成方法
开源中国上已经有开发者xfan1024完成了dropbear对OpenHarmony的适配。
项目地址:https://gitee.com/xfan1024/oh-dropbear
-
拉取OpenHarmony代码并正确编译
请参考我之前的一篇博客: OpenHarmony 编译固件
-
编辑repo的清单文件,默认路径位于OpenHarmony源码目录下的
./.repo/manifests/default.xml
-
在原本的
标签下再增加一个
标签
<remote fetch="." name="origin" review="https://openharmony.gitee.com/openharmony/"/><remote fetch="https://gitee.com/xfan1024/" name="origin"/>
-
添加一个
标签,保持与其他
标签平级即可
<project name="oh-dropbear" path="third_party/dropbear" remote="xfan1024" revision="588cd36d3fbd1268c669d32a37e0599124ac7cad"> <linkfile src="openharmony-develtools" dest="developtools/dropbear"/></project>
可参考: https://gitee.com/xfan1024/oh-rpi3b/blob/devel/oh-rpi3b.xml 文件的写法
-
在源码目录执行命令
repo sync -c third_party/dropbear
-
修改产品描述文件,例如
productdefine/common/products/Hi3516DV300.json
在parts数组中增加一项
"developtools:dropbear": {},
-
再次编译即可生成安装了dropbear的固件
-
如何连接设备
登录信息
重新烧录固件后,dropbear默认自启动
默认用户名:shell 或 root
默认密码:openharmony
若需要修改默认密码,请修改/etc/init/dropbear.cfg
文件。
"export DROPBEAR_PASSWORD openharmony"
需要注意的是,/system分区默认以只读形式挂载。你可能需要执行以下命令进行重挂载才可编辑文件。
mount -oremount,rw /
如果你的设备上没有安装vi命令,可以将该文件先将文件拷贝到本机,本机修改完成后再拷贝回设备。
网络配置
要成功连接开发板,需要为开发板设置一个IP地址。可以通过设置界面连接WIFI获取一个IP地址,也可以直接使用命令为有线网卡配置IP地址
# 为eth0配置静态IP地址,IP地址请修改为你想设置的地址ifconfig eth0 192.168.1.95
如果你希望开机自动设置静态IP地址,可以编辑/etc/init/dropbear.cfg
文件,增加一行配置静态IP的命令。
注意,IP地址的设置需要合理。最简单的做法是和你的开发机接入同一个路由器,配置到同一个网段。
当然也可以跨网段,但你需要保证你的开发机到你的设备是路由可达的。
问题诊断
你可以运行以下命令查看dropbear是否正常启动。
ps -A | grep dropbear
你也可以在开发机上运行ping命令测试是否可访问到设备。
ping 192.168.1.95
配置文件参考
{ "jobs" : [{ "name" : "post-fs", "cmds" : [ "export DROPBEAR_PASSWORD openharmony", "export DROPBEAR_SHELL /system/bin/sh", "export DROPBEAR_HOME /", "mkdir /data/dropbear", "exec /system/bin/ifconfig eth0 192.168.1.95", "start dropbear" ] } ], "services" : [{ "name" : "dropbear", "path" : ["/system/bin/dropbear", "-FRB"], "disabled" : 1 } ]}