Android SSH服务
我在Android手机上安装运行SSH服务的原因是我想把Android手机作为一个超级移动Linux主机来使用,能够透明地检查Android上的服务和程序,方便传输数据。
Android上的sshd服务分为两类:
需要root之后才能安装使用,如 DropBear Server II // ssh/scp (root only)
不需要root就可以安装使用,如 SimpleSSHD
备注
不需要root就能够使用的sshd服务,只能使用1024端口以上的监听端口,例如 SimpleSSHD 默认使用 2222 端口;此外,非root的sshd服务,登陆以后限制在个人目录沙箱下,权限不能看到整个系统的进程,只能作为简单的个人应用文件传输或转跳其他sshd服务。
SimpleSSHD
SimpleSSHD是一个非常简洁的SSHD服务,可以直接从Google Play上安装,并且不需要root设备就可以运行。
首次启动SimpleSSHD,默认启动在端口 2222 上,这个SSH服务建议使用密钥登陆,但是,如果首次运行,还没有复制公钥到服务器端时,提供了一个简单的一次性密码登陆方式。当你使用 ssh user@<server_ip> 访问SimpleSSHD服务,由于程序第一次启动是开启了一个终端在前台运行,你会看到控制台在检测了没有密钥存在,就会提示:
no authorized keys, generating sigle-use passwd:
------
XXXXXX
------
这样,你就可以在客户端输入这个密码登陆到SimpleSSHD提供的个人用户系统中。
现在你可以把自己的公钥存放到 ~/authorized_keys
echo "ssh-rsa AAAAB3...." > authorized_keys
然后就可以无需密码登陆到SimpleSSHD系统中。
备注
Android系统提供了一个内置的 /system/bin/ssh ,但是这个工具访问服务器,需要读写本地目录 /data/.ssh ,对于没有root系统的SimpleSSHD环境是没有权限的。所以会无法使用密钥对等。通过 adb 在
安装设置系统sshd
备注
实际上Android系统中已经内建了 sshd 应用,位于 /system/bin/sshd 只不过没有经过配置是无法使用的。你甚至不需要安装第三方sshd服务就可以使用。
备注
详细的Android手机 root 方法,请参考 How to Root Your Android Phone with SuperSU and TWRP
在root过的手机上,安装 openconnect 客户端,翻墙,访问Google Play,安装 Terminal 终端程序,并且通过 SuperSU 授予该程序 root 运行权限,这样我们就可以通过 Termianl 直接执行
su命令切换到root用户身份,则可以继续以下设置步骤。在终端切换到
root身份之后,首选需要将根目录重新挂载成读写模式(默认根目录是只读模式):mount -o rw,remount
执行以下命令为
sshd准备服务器证书:/usr/bin/ssh-keygen -A
备注
出于安全需求,需要设置一个普通用户帐号,并且修改好系统的root用户帐号密码,避免安全漏洞。
创建
/.ssh目录,然后从自己的笔记本电脑上scp过来服务器登陆公钥文件,存放到/.ssh/authorized_keys,这样就可以通过密钥登陆系统:scp huatai@192.168.1.1:/home/huatai/.ssh/idsa.pub /root/.ssh/authorized_keys
启动sshd服务:
/system/bin/sshd
然后就可以远程登陆到Android系统中,实现一个完整的系统访问。