Android 搭建ssh服务
搭建步骤:
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
构建指定目录下的源码
- . build/envsetup.sh
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)
参考网址
- https://blog.csdn.net/ieryca/article/details/71171561
- https://blog.csdn.net/kai_zone/article/details/78363862
- https://blog.csdn.net/myvest/article/details/53407864
- https://www.ibm.com/developerworks/cn/opensource/os-cn-android-build/index.html
Android 搭建ssh服务的更多相关文章
- 在windows上搭建SSH服务踩过的坑
前两天安装了windows操作系统,想在windows上做内网穿透,所以就想在windows下启用ssh服务,今天就来讲一下我在搭建ssh服务中遇到的坑. 我显示在Mac下搭建了ssh服务,并且测试通 ...
- 如何搭建ssh服务?
为了日后便于查询,本文所涉及到的所有命令集合如下: rpm -qa | grep openssh #查看是否安装了openssh软件 service sshd status #服务端的ssh状态 if ...
- linux服务搭建----ssh服务开启
//ssh 服务 ssh 192.168.88.254 如何开启 service sshd restart 关掉该服务 servicesshd stop ...
- ubuntu搭建ssh服务
本人在ubuntu16.4.4.0-13下测试 #man uname//用于打印系统信息 sudo apt install update sudo apt install openssh-server ...
- 搭建SSH服务
1.安装 ssh-server 通过命令进行安装:sudo apt-get install openssh-server 在安装时遇到问题,根据提示,执行命令:sudo apt-get update, ...
- Windows7安装Bitvise开启ssh服务
Windows7安装Bitvise开启ssh服务 by:铁乐猫 在Liunx和windows10上配置SSH服务是一件很容易的事,毕竟系统己经自带了ssh的服务功能. 不过在windows7上可不容易 ...
- Mosquitto搭建Android推送服务(一)MQTT简介
总体概要: MQTT系列文章分为4部分 1.MQTT简介 2.mosquitto服务器搭建 3.编写Mosquitto的可视化工具 4.使用Mosquitto完成Android推送服务 文章钢要: 对 ...
- 快速搭建建SSH服务
一般来说如果用Ubuntu作为服务器,我们经常需要通过其他客户端远程连接它. 远程连接需要使用SSH,这里列出了一个快速完成这一任务的方法. 键入命令 # sudo apt-get install o ...
- centos7服务搭建常用服务配置之一:SSH
目录 1 SSH服务协议 1.1 ssh服务协议说明 1.2 ssh服务工作机制 1.3 ssh加密技术说明 1.3.1 ssh实现安全链接建立,利用要是和锁头 1.3.2 ssh加密算法 1.4 s ...
随机推荐
- UVa 10905 孩子们的游戏
https://vjudge.net/problem/UVA-10905 题意: 给定n个正整数,把它们连接成一个最大的整数. 思路: 实在是没想到直接用string来排序了. #include< ...
- POJ 3628 Bookshelf2(0-1背包)
http://poj.org/problem?id=3628 题意:给出一个高度H和n个牛的高度,要求把牛堆叠起来达到H,求出该高度和H的最小差. 思路:首先我们计算出牛的总高度sum,sum-H就相 ...
- java工程师
java工程师 职位描述 1.参与产品后台需求和产品经理确定: 2.主导产品后台架构设计和前端通讯协议: 3.设计后台的架构,能支持大的并发量: 4.优化后台的性能,能保证接口的流畅性: 5.负责解决 ...
- bzoj 1483: [HNOI2009]梦幻布丁 启发式合并vector
1483: [HNOI2009]梦幻布丁 Time Limit: 10 Sec Memory Limit: 64 MB[Submit][Status][Discuss] Description N个 ...
- Error: Checksum mismatch.
bogon:bin macname$ brew install go ==> Downloading https://homebrew.bintray.com/bottles-portable- ...
- GRASP (职责分配原则)
要学习设计模式,有些基础知识是我们必须要先知道的,设计模式是关于类和对象的一种高效.灵活的使用方式,也就是说,必须先有类和对象,才能有设计模式的用武之地,否则一切都是空谈,那么类和对象是从那冒出来的呢 ...
- 页面资源缓存 html css js
html <meta http-equiv="Expires" content="0"><meta http-equiv="Prag ...
- Java-Java语言
2017-10-03 21:25:38 Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java语言具有功能强大和简单易用两个特征.J ...
- Eclipse 设置代码风格
自动调整代码风格 快捷键Ctrl + Shift + F 或者 右键 source -> format 设置代码风格 window -> preference -> java -&g ...
- gradle 编译 No such property: sonatypeUsername错误解决
No such property: sonatypeUsername for class: org.gradle.api.publication.maven.internal.ant.DefaultG ...