关闭

Android 系统中如何运行 sshd?

316人阅读 评论(0) 收藏 举报

本文和大家分享的主要是android系统中运行sshd相关知识,希望对大家学习android有所帮助,一起来看看吧。

  新的 Z5C 到手。拿 root 装软件。然后发现一个很重要的事情:我之前在 Z3C + Android 4.4.4 上用得好好的 Rooted SSH/SFTP Daemon ,在登录的时候报了这么个错:

  CANNOT LINK EXECUTABLE: "/system/lib/libc++.so" is 32-bit instead of 64-bit

  page record for 0xXXXXXXXXXX was not found (block_size=32)

  网上搜了一下, 解决方法 是有的,要重新编译 dropbear。可我之前研究过,我这软件使用的 dropbear 是一个 修改版 ,和我用的这个 app 一样,好久没更新了……

  于是想找个新的 sshd。之前我是使用的 SSHDroid 。后来它需要付费版才能使用密钥认证了……而我的要求就两点:可以以 root 份登录,并且支持密钥认证。在 Play 商店里能找到的 sshd 我都试过了一遍,竟然没一个能满足这么基本的需求的…………

  之所以需要以 root 身份登录,而不是登录之后再获取 root,是因为跑命令时 su 之后很容易出现奇怪的问题,和缓冲、终端控制有关。

  于是我只好失望地放弃使用 app,转到自己熟悉的领域——Linux 系统,编译一个 sshd adb 进去跑好了。

  一开始使用的是 socat + tinyssh 的方案。这个方案我之前在光猫上实现过,tinyssh 的代码很少,很容易编译和修改。socat 直接用 之前编译的版本 就可以了。因为 Android 毕竟不是完整的 Linux userland,所以得把 tinyssh 改一改,主要是用户主目录和默认 shell 的部分。我就直接硬编码进 root 的配置了。然后写个 shell 脚本来启动:

  #!/system/bin/sh

  export ANDROID_ROOT=/system ANDROID_DATA=/data

  PATH=/system/xbin:/su/xbin:/su/bin:/sbin:/vendor/bin:/system/sbin:/system/bin

  socat tcp-l:PORT,reuseaddr,fork exec:'tinysshd /data/tinyssh/keydir' &

  这样就可以了。只支持 Ed25519 密钥登录,挺好的。

  然而,用着用着就发现有点小问题:socat 对经由网络的数据进行转发,有点低效;tinyssh 不支持连接复用,在一个会话中收到新的连接请求时会直接退出;还没有 scp 命令……

  一开始我去 dropbear 那边编译了一个 scp。编辑好配置文件、开始 make 的时候,敲「make PROGRAMS=scp」就可以编译出一个 scp 命令了。然后我就想,既然都用上 dropbear 了,要不就都用了吧。于是把 dropbear 也编译出来了。不是很顺利,主要是以下几个事:

  . 改路径。各种路径,host key 的,pid 文件的,默认 PATH,还要禁用掉 lastlog 和 syslog 什么的

  . 改用户信息。默认 shell、主目录。不要检查 /etc/shells。刚刚发现我还不小心把其中两行代码交换了,是说怎么退出的时候会段错误呢 _(:з∠)_

  . dropbear 的构建系统不支持 out-of-tree 构建,也就是不能像我习惯的那样,「mkdir build-android」然后进去「../configure」 :-(

  另外就是,dropbear 不支持 Ed25519 key,于是我只好用 RSA key 了(DSS 有问题;openssh 的 ECDSA 实现也有问题) :-(

  弄好之后同样写个 shell 脚本方便调用:

  #!/system/bin/shexport ANDROID_ROOT=/system ANDROID_DATA=/data

  /system/xbin/dropbear -R -p PORT

  然后,启动服务的事情。我发现改 /init.rc 不管用。这个是 initramfs,每次重启之后就恢复原状了……我懒得去重新打 initamfs 的包了,就每次重启系统之后接上 USB 线,然后 adb shell进去跑脚本……还好 Z5C 跟 Z3C 不一样,USB 口在外边,很好插。

  终于把 remote root shell 弄好了,接下来就是各种 rsync 和 scp 传文件改配置什么的了,一是复制各种软件的配置文件和数据,二是备份,三是把文件拿电脑上研究、编辑,方便啊!Sony 有个「换机助手」软件,但是它不能在加密了的手机上使用……

  最后,还留下了一个问题:同样的环境,同样是 Wi-Fi 传输,我的电脑和 Z3C 之间传输速度能达到 4MiB/s,但是 Z5C 却只有 300KiB/s 左右的样子……

 

来源:依云's Blog


0
0
查看评论

Android 类sshd服务

  • 2015-03-26 21:58
  • 933KB
  • 下载

android 添加ssh服务端

1、安装条件首先需要root2、使用的工具android源码external下,本身就有两个sshd服务端,dropbear和openssh。dropbear是一个轻量级的ssh,所以我们使用这个(其实另外一个原因是因为openssh一直没配成功,不知道账户密码在android下要怎么设置) 源码...
  • myvest
  • myvest
  • 2016-11-30 14:42
  • 5457

如何打开sshd 服务

sudo apt-get install openssh-server Ubuntu缺省安装了openssh-client,所以在这里就不安装了,如果你的系统没有安装的话,再用apt-get安装上即可。 然后确认sshserver是否启动了: ps -e |grep ssh 如果...
  • Aaronzzq
  • Aaronzzq
  • 2012-11-19 15:48
  • 946

linux开启sshd运行rootssh访问及其它问题(解决后存档)

inux开启ssh server 1.shell$sudo apt-get install ssh 2.修改/etc/ssh/sshd_config中PasswordAuthentication yes /etc/init.d/ssh restart 此时就可以远程访问了: local$s...
  • yu275184637
  • yu275184637
  • 2013-01-06 10:34
  • 673

Openssh移植到Android系统的步骤

Openssh移植到Android系统的步骤 1、             由于android SDK中一般不带有openssh源码的,虽然原版的android源码中是...
  • HWQ331717300
  • HWQ331717300
  • 2017-05-16 13:43
  • 1091

〖Android〗sshd for android, 及映射根文件系统至本地盘符

转载http://www.cnblogs.com/scue/p/3587465.html
  • hkh5730
  • hkh5730
  • 2014-09-26 19:48
  • 1154

在Android手机上安装sshd服务

刚刚搞定了Android手机上安装sshd服务, 特此记录一下。 尽管我已经在android手机上安装了完整的debian, 但是是通过chroot方式进入的, 因此android自身的一些命令如am, pm, getprop反而无法使用, 一直都想在手机上安装一个sshd服务,通过远程登录后进入...
  • wooderin
  • wooderin
  • 2013-07-31 20:28
  • 3182

重启sshd服务

sservice sshd restart
  • shaobingj126
  • shaobingj126
  • 2011-10-08 16:40
  • 22900

Android 系统中如何运行 sshd?

本文和大家分享的主要是android系统中运行sshd相关知识,希望对大家学习android有所帮助,一起来看看吧。   新的 Z5C 到手。拿 root 装软件。然后发现一个很重要的事情:我之前在 Z3C + Android 4.4.4...
  • qq_32506555
  • qq_32506555
  • 2017-01-03 23:37
  • 316

Android+ssh项目综合实践

  • 2013-06-18 11:31
  • 1.94MB
  • 下载
    个人资料
    • 访问:244925次
    • 积分:11734
    • 等级:
    • 排名:第1538名
    • 原创:942篇
    • 转载:2篇
    • 译文:0篇
    • 评论:18条
    最新评论