ssh是一个常见的、可靠的远程终端/文件传输的协议,OpenHarmony本身并没有ssh服务器的功能。
为了启用ssh功能,我们需要引入一个第三方软件 Dropbear
Dropbear是由Matt Johnston所开发的Secure Shell软件(包括服务端与客户端)。
期望在存储器与运算能力有限的情况下取代OpenSSH,尤其是嵌入式系统。
通俗来说,dropbear是一个ssh服务器的实现软件,同时具有ssh客户端的功能。
dropbear通常在嵌入式Linux上运行,例如大名鼎鼎的OpenWRT默认的ssh的服务器和客户端正是dropbear。
OpenHarmony默认使用HDC作为调试工具,类似于Android平台的adb。
计算机通过USB线缆连接OpenHarmony设备。可以实现执行命令、文件上传、文件下载等功能。
一般情况下HDC足够大多数人的需求。但你如果更喜欢使用ssh协议,或者有更多高级需求例如
那么为OpenHarmony设备安装Dropbear将是一个更好的选择。
开源中国上已经有开发者xfan1024完成了dropbear对OpenHarmony的适配。
项目地址:https://gitee.com/xfan1024/oh-dropbear
拉取OpenHarmony代码并正确编译
请参考我之前的一篇博客: OpenHarmony 编译固件
编辑repo的清单文件,默认路径位于OpenHarmony源码目录下的./.repo/manifests/default.xml
在原本的<remote>
标签下再增加一个<remote>
标签
<remote fetch="." name="origin" review="https://openharmony.gitee.com/openharmony/"/>
<remote fetch="https://gitee.com/xfan1024/" name="origin"/>
添加一个<project>
标签,保持与其他<project>
标签平级即可
<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
}
]
}