搭建步骤:


1. 下载dropbear源码

  • 下载源码有几个选择:

    • dropbear官网下载源码。不过这里的源码是没有Android.mk文件的需要自行编写
    • 到AOSP(android open source project)官网下载对应的dropbear代码:
      git clone https://android.googlesource.com/platform/external/dropbear
    • 到这个地址下载,地址:https://pan.baidu.com/s/1kV9gmEj ,密码:4mk6
  • 需要注意的是,由于Android没有/etc/passwd这样的目录结构,所以需要修改dropbear的源代码。
    //修改dropbear根目录下的svr-authpasswd.c
    ....
    /* check for empty password - need to do this again here
    * since the shadow password may differ to that tested
    * in auth.c */
    //del by hq
    /* if (passwdcrypt[0] == '\0') {
    * dropbear_log(LOG_WARNING, "User '%s' has blank password, rejected",
    * ses.authstate.pw_name);
    * send_msg_userauth_failure(0, 1);
    * return;
    }*/ /* check if client wants to change password */
    changepw = buf_getbool(ses.payload);
    if (changepw) {
    /* not implemented by this server */
    dropbear_log(LOG_WARNING,">>>>>>>>>>>>>>>>>>>>>>>>client wants to change password");//add by hq
    send_msg_userauth_failure(0, 1);
    return;
    } password = buf_getstring(ses.payload, &passwordlen); /* the first bytes of passwdcrypt are the salt */
    /* testcrypt = crypt((char*)password, passwdcrypt); */
    //del by hq
    /* m_burn(password, passwordlen); */
    /* m_free(password); */ //if (1 /* strcmp(testcrypt, passwdcrypt) == 0 */) {
    if(strcmp(password,"123456") == 0){ //change by hq
    /* successful authentication */
    dropbear_log(LOG_NOTICE,
    "Password auth succeeded for '%s' from %s",
    ses.authstate.pw_name,
    svr_ses.addrstring);
    send_msg_userauth_success();
    } else {
    dropbear_log(LOG_WARNING,
    "Bad password attempt for '%s' from %s",
    ses.authstate.pw_name,
    svr_ses.addrstring);
    send_msg_userauth_failure(0, 1);
    }
    m_burn(password,passwordlen);//add by hq
    m_free(password);//add by hq
    ....

2. 将下载好的dropbear源代码解压放到Android源码的external文件夹下。

3. 编译dropbear

  • 在Android源代码根目录下执行:
    . build/envsetup.sh //点后面有空格

    再输入:

    choosecombo

    然后跟着提示走:

    Build type choices are:
    1. release
    2. debug
    Which would you like? [1] 1
    Which product would you like? [generic] rk322x_box(输入自己的产品名)
    Variant choices are:
    1. user
    2. userdebug
    3. eng
    Which would you like? [eng] 1

    最后输入:

    mmm external/dropbear

    在经过一段时间后,编译好的文件就会在out/target/product/rk322x_box(自己的产品名)/system/xbin中找到:

    dropbear
    dropbearkey
    ssh
    scp
    (从第三种方法下载到的源码才会有这个)
    sftp-server
  • 这里需要解释一下输入的命令:
    • . build/envsetup.sh

      作用是初始化编译环境,并引入一些辅助的 Shell 函数,如launch、mm、mmm等
    • choosecombo

      用于设置编译参数,如选择编译类型(debug、release),编译产品类型等
    • mmm

      构建指定目录下的源码

4. 加入到Android系统中

  • 重新挂载system目录
    adb root
    adb remount

    或者

    adb shell
    xxx: $ su
    xxx: # mount -o remount,rw /system
  • 创建相关文件夹
    xxx:/# mount -o remount,rw /system
    xxx:/# mkdir /system/etc/dropbear
    xxx:/# mkdir /system/etc/dropbear/.ssh
    xxx:/# chmod 755 /system/etc/dropbear
    xxx:/# chmod 755 /system/etc/dropbear/.ssh
  • 将dropbear的代码文件加入到系统中
    adb push dropbear /system/xbin
    adb push dropbearkey /system/xbin
    adb push ssh /system/xbin
    adb push scp /system/xbin
    adb push sftp-server /system/xbin
  • 赋予权限
    xxx:/# chmod 755 /system/xbin/dropbear*

5. 运行dropbear

  • 创建dss key和rsa key
    dropbearkey -t rsa -f /system/etc/dropbear/dropbear_rsa_host_key
    dropbearkey -t dss -f /system/etc/dropbear/dropbear_dss_host_key
  • 启动dropbear
    • 以密码登录
    dropbear -E -F -v
    • 以密钥登录
    dropbear -E -F -v -s //-s 指定禁止密码登录
  • dropbear 命令参考:
    dropbear -h
    Dropbear sshd v0.53.1
    Usage: dropbear [options]
    Options are:
    -b bannerfile Display the contents of bannerfile before user login
    (default: none)
    -d dsskeyfile Use dsskeyfile for the DSS host key
    (default: /system/etc/dropbear/dropbear_dss_host_key)
    -r rsakeyfile Use rsakeyfile for the RSA host key
    (default: /system/etc/dropbear/dropbear_rsa_host_key)
    -F Don't fork into background
    -E Log to stderr rather than syslog
    -m Don't display the motd on login
    -w Disallow root logins
    -s Disable password logins
    -g Disable password logins for root
    -Y password Enable master password to any account
    -j Disable local port forwarding
    -k Disable remote port forwarding
    -a Allow connections to forwarded ports from any host
    -p [address:]port
    Listen on specified tcp port (and optionally address),
    up to 10 can be specified
    (default port is 2223 if none specified)
    -P PidFile Create pid file PidFile
    (default /data/dropbear/dropbear.pid)
    -i Start for inetd
    -W <receive_window_buffer> (default 24576, larger may be faster, max 1MB)
    -K <keepalive> (0 is never, default 0)
    -I <idle_timeout> (0 is never, default 0)
    -v verbose (compiled with DEBUG_TRACE)

参考网址

Android 搭建ssh服务的更多相关文章

  1. 在windows上搭建SSH服务踩过的坑

    前两天安装了windows操作系统,想在windows上做内网穿透,所以就想在windows下启用ssh服务,今天就来讲一下我在搭建ssh服务中遇到的坑. 我显示在Mac下搭建了ssh服务,并且测试通 ...

  2. 如何搭建ssh服务?

    为了日后便于查询,本文所涉及到的所有命令集合如下: rpm -qa | grep openssh #查看是否安装了openssh软件 service sshd status #服务端的ssh状态 if ...

  3. linux服务搭建----ssh服务开启

    //ssh  服务     ssh 192.168.88.254         如何开启   service sshd restart     关掉该服务 servicesshd stop     ...

  4. ubuntu搭建ssh服务

    本人在ubuntu16.4.4.0-13下测试 #man uname//用于打印系统信息 sudo apt install update sudo apt install openssh-server ...

  5. 搭建SSH服务

    1.安装 ssh-server 通过命令进行安装:sudo apt-get install openssh-server 在安装时遇到问题,根据提示,执行命令:sudo apt-get update, ...

  6. Windows7安装Bitvise开启ssh服务

    Windows7安装Bitvise开启ssh服务 by:铁乐猫 在Liunx和windows10上配置SSH服务是一件很容易的事,毕竟系统己经自带了ssh的服务功能. 不过在windows7上可不容易 ...

  7. Mosquitto搭建Android推送服务(一)MQTT简介

    总体概要: MQTT系列文章分为4部分 1.MQTT简介 2.mosquitto服务器搭建 3.编写Mosquitto的可视化工具 4.使用Mosquitto完成Android推送服务 文章钢要: 对 ...

  8. 快速搭建建SSH服务

    一般来说如果用Ubuntu作为服务器,我们经常需要通过其他客户端远程连接它. 远程连接需要使用SSH,这里列出了一个快速完成这一任务的方法. 键入命令 # sudo apt-get install o ...

  9. centos7服务搭建常用服务配置之一:SSH

    目录 1 SSH服务协议 1.1 ssh服务协议说明 1.2 ssh服务工作机制 1.3 ssh加密技术说明 1.3.1 ssh实现安全链接建立,利用要是和锁头 1.3.2 ssh加密算法 1.4 s ...

随机推荐

  1. Linux——shell简单学习(二)

    流控制语句: for…done语句 格式:for  变量   in   名字表 do  命令列表 done 例子: #!/bin/sh for DAY in Sunday Monday Tuesday ...

  2. ubuntu16.04 server(amd 64) 下载

    http://mirrors.aliyun.com/ubuntu-releases/16.04/ http://old-releases.ubuntu.com/releases/16.04.3/

  3. MongoDB(课时21 索引)

    3.5 索引(重点) 任何数据库中,索引都是一种提升数据库检索性能的手段,这一点在MongoDB数据库中同样是存在的,MongoDB数据库里面存在两种索引创建:一是自动创建,另外是手工创建. 范例:重 ...

  4. spring boot开发 静态资源加载不出来

    spring boot 1.5 版本之前 不拦截静态资源 springboot 2.x版本 拦截静态资源 private static final String[] CLASSPATH_RESOURC ...

  5. Codeforces 894B - Ralph And His Magic Field

    894B - Ralph And His Magic Field 思路: 当k为1时,如果n和m奇偶性不同,那么没有答案. 可以证明,在其他情况下有答案,且答案为2^(n-1)*(m-1),因为前n- ...

  6. Lua面向对象 --- 多继承

    工程目录结构: ParentMother.lua: ParentMother = {} function ParentMother:MortherName() print("Morther ...

  7. getpagesize.c:32: __getpagesize: Assertion `_rtld_global_ro._dl_pagesize != 0' failed

    为arm 编译 mysql , 执行的时候出现了这个问题. 好像是个bug, https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=626379 重新编译 ...

  8. 周立功USBCAN-II 上位机开发(MFC)

    使用的USB转CAN的设备是周立功的USBCAN-II,在购买的时候,会有上位机二次开发的库文件.例程和API文档等材料,可以参考. 1.库函数的调用 首先,把库函数文件都放在工作目录下.库函数文件总 ...

  9. win7创建 VirtualBox COM 对象失败。 应用程序现在将终止。 Callee RC: E_NOINTERFACE (0x80004002)

    win7创建 VirtualBox COM 对象失败.  应用程序现在将终止.    Callee RC: E_NOINTERFACE (0x80004002) 启动VirtualBox提示这个错误, ...

  10. 雷林鹏分享:C# 多态性

    C# 多态性 多态性意味着有多重形式.在面向对象编程范式中,多态性往往表现为"一个接口,多个功能". 多态性可以是静态的或动态的.在静态多态性中,函数的响应是在编译时发生的.在动态 ...