二、 连接手机
2.1 wifi 登录查看手机
通过 OpenSSH 插件使用 WIFI 链接手机, 在 mac 终端输入格式为: ssh 用户名@手机IP
ssh root@192.168.2.186
在这里 手机是服务端, 电脑是客户端
OpenSSH是让手机开启SSH登录服务。
默认密码:
alpine
首次提示会出现保存提示, 需要输入 yes 保存后继续
➜ ~ ssh root@192.168.2.186
The authenticity of host '192.168.2.186 (192.168.2.186)' can't be established.
RSA key fingerprint is SHA256:Ae5Y7TUos3lIHFOyPSy4/HcQmYmcjeN4oxYI4goC7NBWqaf.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
ps: 这里其实是提示公钥key 的hash值让验证有没有被篡改的。
输入密码: alpine (默认的) , 输入之后就登录成功了:
root@192.168.2.186's password:
iPhone-XS-Max:~ root#
这样就进入手机的 root 环境了, 手机还还有个 mobile 用户, 这个权限有限, sh mobile 就切换成了, (还是在 root 权限下操作的吧)
2.2 查看文件目录
在 root 目录下可以看到系统文件如下, 还可以通过 cd / 进入根目录:
iPhone-XS-Max:~ root# ls
Library/ Media/
iPhone-XS-Max:~ root# cd /
iPhone-XS-Max:/ root# ls
Applications/ Developer/ Library/ System/ User@ bin/ boot/ cores/ dev/ etc@ lib/ mnt/ private/ sbin/ tmp@ usr/ var@
iPhone-XS-Max:/ root#
还可以查看手机的应用列表"
iPhone-XS-Max:/ root# cd Applications/
iPhone-XS-Max:/Applications root# ls
AXUIViewService.app/ FieldTest.app/ SLGoogleAuth.app/
AccountAuthenticationDialog.app/ FindMy.app/ SLYahooAuth.app/
ActivityMessagesApp.app/ FindMyiPhone.app/ SMS\ Filter.app/
通过 ps -A 查看手机当前的进程,
你想查看手机上某个 app 的安装目录(以微信为例: 需要先把微信运行在前台): ps -A | grep WeChat
iPhone-XS-Max:/Applications root# ps -A
PID TTY TIME CMD
1 ?? 5:33.67 /sbin/launchd
299 ?? 1:46.48 /usr/libexec/substituted
300 ?? 0:00.00 (amfid)
376 ?? 0:00.00 /usr/libexec/amfid
387 ?? 0:00.30 /System/Library/PrivateFrameworks/AppleCredentialManager.framework/AppleCredentialManagerDaemon
---此处省略若干---
33511 ?? 0:00.08 /usr/libexec/gpsd
33514 ?? 0:00.17 /System/Library/PrivateFrameworks/MobileBackup.framework/backupd
33030 ttys000 0:00.07 -sh
33521 ttys000 0:00.02 ps -A
---这里分行看的更清除---
iPhone-XS-Max:/Applications root# ps -A | grep WeChat
815 ?? 2560:27.65 /var/containers/Bundle/Application/0FBC53D3-FEDF-464D-A855-7A32CC595764/WeChat.app/WeChat
33506 ?? 0:03.75 /var/containers/Bundle/Application/0FBC53D3-FEDF-464D-A855-7A32CC595764/WeChat.app/WeChat
33525 ttys000 0:00.02 grep WeChat
iPhone-XS-Max:/Applications root#
这个时候 MachO 文件路径就找到了。
2.3 退出手机查看
control+d 或者 exit 就可以退出登录了
iPhone-XS-Max:/Applications root# exit
logout
Connection to 192.168.2.186 closed.
2.4 用户
iOS 系统下有两个用户:root、mobile。
-
root:最高权限用户,可以访问任意文件. -
mobile:普通用户,只能访问改用户目录下文件/var/Mobile
mobile 用户在自己的目录下可以创建文件,在根目录下没有权限:
root 用户就可以的, 就测试了
2.5 修改用户密码
-
root用户可以修改所有用户的密码。 -
passwd命令修改密码: -
passwd 用户名
-
输入两次新密码,确认修改。因为是登录状态所以不用输入原始密码。
ps: root 用户修改 mobile 用户密码:
~ ssh
iPhone-XS-Max:~ root# passwd mobile
Changing password for mobile.
New password:
Retype new password:
iPhone-XS-Max:~ root#
一般不推荐修改密码,直接配置免密登录就好了。如果修改密码后忘记了那么重新安装就好了。
2.6 密钥保存验证
通过 1.3 SSH 登录过程我们知道在首次登录的时候会提示验证公钥的 hash 值,并且保存公钥到 ~/.ssh 目录下的 known_hosts 中,那么公私钥手机中也应该是有的。
进入手机 cd /etc/ssh 目录:
iPhone-XS-Max:~ root# cd /etc/ssh
iPhone-XS-Max:/etc/ssh root# ls
moduli ssh_host_dsa_key ssh_host_rsa_key sshd_config
ssh_config ssh_host_dsa_key.pub ssh_host_rsa_key.pub
iPhone-XS-Max:/etc/ssh root#
可以看到 ssh_host_rsa_key 的公私钥。这也就验证了上面的登录过程。
对比可以看到. 如果 IP地址 改变了就无法进行访问了, 就会出现中间人攻击的提示了
2.7 免密登陆(公钥登录)
2.5.1 免密登录原理
免密码登录也称公钥登录,原理就是用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的直接允许登录不再要求密码。
2.5.2 免密登录配置
- .客户端在
~/.ssh/目录下生成公私钥ssh-keygen:
一路回车不设置密码(如果设置密码虽然免密登录了,但是每次都要输rsa的密码)。
- 拷贝公钥给
SSH服务器:ssh-copy-id 用户名@服务器IP, 拷贝的时候需要输入root账户的密码
这个时候再登录就不需要输入密码了:
~ ssh root@192.168.2.186
iPhone-XS-Max:~ root#
ssh-copy-id 可以通过 -i 指定文件。某些系统通过指定 -i 会无效。(虽然拷贝成功,但是验证的是 ssh-copy-id 自己生成的 key )。
3.拷贝的公钥在服务器 ~/.ssh/authorized_keys中:
在某些版本中 ssh-copy-id 不需要我们生成公钥,该命令会自己生成公私钥进行拷贝。如果遇见自己生成的 公钥 key 和和拷贝到authorized_keys 中的对不上那么很可能是这个问题。
2.8 配置快捷登录
加入我们有多台手机,或者并不想输入ip那么麻烦的去登录。在 ~/.ssh 下创建一个 config 文件,对 ssh 登录配置别名:
Host iPhone7
Hostname 172.20.10.11
User root
Port 22
使用:
~ ssh iPhoneXsMax
iPhone-XS-Max:~ root#
2.9 SSH其它操作
-
删除保存的服务器地址的key:ssh-keygen –R 服务器IP地址(当SSH登录手机,手机就是服务器)
-
know_hosts文件:用于保存SSH登录服务器所接受的key,在系统~/.ssh目录 -
ssh_host_rsa_key.pub文件:作为SSH服务器发送给连接者的key,在系统/etc/ssh目录中 -
config文件:在~/.ssh目录下创建一个config文件。内部可以配置ssh登录的别名。