当前位置: 首页 > 工具软件 > dropbear > 使用案例 >

OpenHarmony 集成ssh服务器 Dropbear

梁英喆
2023-12-01

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

  1. 拉取OpenHarmony代码并正确编译

    请参考我之前的一篇博客: OpenHarmony 编译固件

  2. 编辑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
        }
    ]
}
 类似资料: