最近有需求使用电脑导出手机中特定app的文件。
当然可以直接连上数据线将手机中的文件下载下来。
为了能做到代码自动化导出,将手机作为一台电脑使用,将手机中的文件导出来。
关键问题是如何将手机作为电脑使用,这里有几个步骤(我使用的是Iphone手机)。
- 1.在手机上安装一个SSH的APP,这里我使用的是iSH。
- 2.组网:将手机和电脑连上同一个wifi
- 2.手机打开iSH,安装sshd服务
- 3.使用电脑ssh客户端链接手机的sshd服务
一、手机下载SSH的APP
这里我使用是iphone手机,安装的是iSH。安卓手机可以使用Termux
二、组网
将手机和电脑连上同一个wifi,保证手机和电脑在同一个局域网内。并找到手机在该wifi下的ip是多少。
这里可以看到,手机在该wifi下的内网ip是:192.168.17.50
可以在电脑端ping一下该ip,如果ping的通,说明电脑和手机直接的网络是通的:
三、通过手机iSH安装sshd服务
打开手机安装的app: iSH:
上面线上了欢迎标语Welcome to Alpine!
,和安装软件使用的命令(apk add)。
1.安装常用命令
Alpine是Linux发行版的一种。类似Redhat、CentOS、Ubantu等。这里需要注意的是Alpine和常用的linus命令有一些命令不一样,这里需要先安装几个软件包:openssh openrc net-tools network-extras busybox-extras;这些软件包中有 ssh sshd service telnet netstat 等命令。
安装语句:
wxl-iPhone:~# apk add openssh openrc net-tools network-extras busybox-extras
其中sshd就是openssh包中的命令(/usr/sbin/sshd)。
2.修改sshd配置文件
wxl-iPhone:~# vi /etc/ssh/sshd_config
找到PermitRootLogin参数,将值改成yes,表示允许使用root账号登陆。
可以看到sshd服务的端口号默认是22。
Alpine的vi命令使用和CentOS一样,快捷键也一样。需要注意的是从编辑模式退出来,使用电脑键盘的Esc键,手机上使用:
3.启动sshd服务
/usr/sbin/sshd # 启动sshd服务
service sshd status # 查看sshd服务运行状态
service sshd restart # 重启sshd服务
四、电脑SSH客户端链接Iphone手机的sshd服务
SecureCRT链接情况:
配置完成后,链接时报错:
Key exchange failed.
No compatible key exchange method. The server supports these methods: curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256
报错信息表明:公钥交换失败,没有兼容的密钥交换方法。 这是因为我的SecureCRT版本中的"Key exchange"部分(见上图)和Iphone手机端的秘钥交换方法不一致。如果上述无法解决这个问题,建议升级SecureCRT软件版本或者使用尝试其他的SSH客户端,如Xshell、putty等。
这是我使用windows上安装的Git自带的SSH客户端使用ssh命令链接的(也可以使用windows的cmd命令窗口链接):
$ ssh root@192.168.17.50
root@192.168.17.50's password:
Welcome to Alpine!
You can install packages with: apk add <package>
You may change this message by editing /etc/motd.
wxl-iPhone:~#
wxl-iPhone:~#
wxl-iPhone:~#
出现Welcome to Alpine!
表示链接成功。Alpine是Linux发行版的一种。类似Redhat、CentOS、Ubantu等。
链接失败问题解决
- 如果出现Connection timed out:
Lenovo@DESKTOP-D6V7C5G MINGW64 ~/.ssh
$ ssh root@192.168.17.50
ssh: connect to host 192.168.17.50 port 22: Connection timed out
可能是手机端的sshd服务未启动,需要在手机端启动sshd服务、或重启sshd服务。
- 如果出现Connection refused:
Lenovo@DESKTOP-D6V7C5G MINGW64 ~/.ssh
$ ssh root@192.168.17.50
ssh: connect to host 192.168.17.50 port 22: Connection refused
是因为手机端不认识当前的电脑客户端。需要将电脑端的/.ssh/id_rsa.pub内部的公钥信息拷贝到手机的/.ssh/authorized_key文件内后重新连接。
下图是电脑端的执行情况和电脑公钥id_rsa.pub信息:
下图是手机端的authorized_key信息(如果文件不存在,需要新建文件):