iOS越狱开发 - OpenSSH连接手机

Open Secure Shell(OpenSSH)是一个安全的登录系统,可以用来替代telnet、rlogin、rcp等。简单的讲,ssh 是一个通过网络登录进入另一台计算机的程序。openSSH 是其中的一种软件。我们可以利用电脑通过 OpenSSH 软件,远程登录到我们的手机。

一、通过openSSH连接(登录)手机(wifi连接)

$ssh 用户名@用户服务器地址
//注:这里的服务器指手机(下同)

iOS 下有两个用户

  • root(最高权限)用户 $HOME:/var/root iPhone:~ root#
  • 还有一个 mobile(普通)用户 $HOME: /var/mobile iPhone:~ mobile$
    mobile 不能操作系统级别的文件

删除SSH服务器对应的公钥

$ssh-keygen -R 服务器IP地址

修改ssh登录密码

  • passwd 输入两次新密码

关闭openSSH连接

$exit

SSH

SSH是一种网络协议.用于计算机之间的加密登录!
openSSH 是其中的一种软件.

SSH通讯过程

iOS越狱开发 - OpenSSH连接手机_第1张图片
image.png

中间人攻击(Man-in-the-MiddleAttack,简称“MITM攻击”)

如果登录同一个服务器(IP),它的公钥(哈希值)发生了变化,它就不会让你登录了,它会判断有中间人攻击。本地一个IP:端口只能保存一个公钥。

预防中间人攻击最有效的方法就是验证【公钥是不是服务器的】!!
如果是公开的 SSH 服务器,一般会将公钥的哈希值【公布在网站上】!!

我们在终端第一次连接 SSH 服务器时,会提示:

The authenticity of host '101.2.79.32 (101.2.79.32)' can't be established.
RSA key fingerprint is SHA256:yMLGAtdE6S87XaMHtvFy41t1fH+QeBgchSTOmennwMQ.
Are you sure you want to continue connecting (yes/no)? 

上面 yMLGAtdE6S87XaMHtvFy41t1fH+QeBgchSTOmennwMQ 就是服务器发给客户端的公钥(哈希值)。这个公钥会保存在本地。保存在:

$cd ~/.ssh/known_hosts
$ls

101.2.79.32 ssh-rsa AAAAB3MzaC1yc2EAAAADAQABAAABAQDAIDd6dG0LIL87woLOWGPiuO3cpBsxsH9VfTA7ETRf7X7Y9gf5Np5Qe02J7HworrX7nNH0Kq32ExRrQGUmdrP0iz0IAbfL7t8MxQb0fSj1uqnX0ZgY8E+EHkHXyyaR9bl0FQlf2G62BuaC+0ZceDtk7EkvXJdiA5dpt3gnlbsYYDWN4xGJItHlGI/Ni1e5bzLQgt4KTEPTl40EDr3Mc0VmXJyzCLpFu8/KzcLaftVkMZoZlrheH+iKlAIE3b7t2DECA/rJKc3SrVJ9kjjJ3LlQ+KQtUZF2utKHJtVke7iM+ZrVwwfnoBp2D1xPMbFClBlg6MMiQk+B1ylDmwqLSpmT

我们再看一下服务器的公钥,服务器的是保存在手机里面的。ssh 登录服务器,查看服务器公钥:

$ssh [email protected]
iPhone:~ root# cd /etc/ssh/
iPhone:/ect/ssh/ root# cat ssh_host_rsa_key.pub

ssh-rsa AAAAB3MzaC1yc2EAAAADAQABAAABAQDAIDd6dG0LIL87woLOWGPiuO3cpBsxsH9VfTA7ETRf7X7Y9gf5Np5Qe02J7HworrX7nNH0Kq32ExRrQGUmdrP0iz0IAbfL7t8MxQb0fSj1uqnX0ZgY8E+EHkHXyyaR9bl0FQlf2G62BuaC+0ZceDtk7EkvXJdiA5dpt3gnlbsYYDWN4xGJItHlGI/Ni1e5bzLQgt4KTEPTl40EDr3Mc0VmXJyzCLpFu8/KzcLaftVkMZoZlrheH+iKlAIE3b7t2DECA/rJKc3SrVJ9kjjJ3LlQ+KQtUZF2utKHJtVke7iM+ZrVwwfnoBp2D1xPMbFClBlg6MMiQk+B1ylDmwqLSpmT

第一次登录 ssh 服务器时,服务器会将自己的公钥发给客户端,客户端会把公钥保存在本地。并用人工方式比对一下客户端的公钥是否与服务器的公钥一致!等下次再登录时,会自动认证!

SSH使用公钥登录

除了使用密码登录,也可以免密码登录!免密码登录是不存大中间人攻击问题的,因为它是在登录成功之后才允许做的事情!
所谓的公钥登录,原理:
1.Mac 电脑将自己的公钥发给远程的手机
2.手机随机的生成一段字符串,发给Mac电脑
3.Mac 利用私钥加密字符串!
4.手机利用公钥解密字符串!
如果还要输入密码的话,设置文件的权限! chmod 755

在终端输入如下命令,生成 rsa 的公私钥:

$ssh-keygen

一路回车就可以,然后在

$cd ~/.ssh

目录底下可以看到生成的私钥id_rsa和公钥id_rsa.pub,直接在该目录下拷 贝公钥到服务器,用命令

$ssh-copy-id [email protected]

接着我们再次登录服务器

$ssh [email protected]

我们会欣喜的发现可以直接登录了,不需要再输入密码了。
登录服务器后,我们可以看一下 .ssh 目录底下

iPhone:~ root# cd ~/.ssh/
iPhone:~/.ssh root# ls

会发现有一个authorized_keys文件。
我们用cat命令查看一下这个文件,再退出进入

$cd ~/.ssh

查看一下id_rsa.pub文件,会发现两者的公钥信息是一样的。

二、通过USB连接手机

SSH 的默认端口是 22
usbmuxd 在 iOS 和 Mac 上都是自带的!

除了上述 wifi 形式连接手机,我们还可以使用 usb 形式连接手机。与wifi 连接相比,usb连接的特点是:快且稳定。对于拷贝文件等需要稳定性的操作,可以使用 usb 连接。使用 usb 连接,我们需要做一个端口的映射。让我们本机电脑的一个端口映射到 22 端口上去。

主要分两步

  • 通过 python 去监听端口
  • 通过 ssh 去连接本机的服务器

详细过程

在终端执行命令

$python tcprelay.py -t 22:1122
//1122是随便写的一个本地没有占用的端口

此时本地的 1122 端口就会一直被监听,只要访问本地的 1122 端口,就会将数据发送到 ssh 连接的 22 端口上。这个时候,我们只需要执行命令

ssh -p 1122 [email protected]
//注:这里 127.0.0.1 也可以改为 localhost

就会映射到 usb 连接的手机上。

注意:这里 1122 端口是本机的,22 端口是 ssh 的

通过Shell脚本简化步骤

上面两步都是一些没有营养的步骤,我们可以通过 Shell 脚本简化。

  • python-client文件夹拷贝到/Users/xipengfei/XPFShell/目录下,然后新建一个 shell 脚本 usbConnect.sh,编写代码python /Users/xipengfei/XPFShell/python-client/tcprelay.py -t 22:1122保存并退出。
  • 新建一个 shell 脚本 usbLogin.sh,编写代码ssh -p 1122 [email protected]保存并退出。

这下,我们只需要在一个终端执行命令sh usbConnect.sh监听端口,在另一个终端执行命令sh usbLogin.sh连接服务器。

注:这里需要注意中间人攻击,同一个服务器(IP),不同的公钥就会出现中间人攻击

拷贝文件

把文件 123.txt 拷贝到服务器(手机)用户目录下,有两种方式:

  • wifi 拷贝
    可以在任意目录下执行
    scp 123.txt [email protected]:~/
  • usb 拷贝
    先映射、监听服务器端口sh usbConnect.sh,再执行
    scp -P 1122 123.txt [email protected]:~/
    //注:这里 127.0.0.1 也可以改为 localhost

应用瘦身

现在大多数应用都支持到 armv7s,有的甚至支持到 armv7(比如微信)。指令集可能会 armv7、armv7s、arm64,这样 mach-o 文件会比较大,导致 ipa 包很大。对于 iPhone5S 及以下的手机来说,只需要 arm64 指令集就够了,这个时候就有必要给应用瘦身。

  • 通过USB连接手机,保证应用传输的时候快且稳定。
  • 使用如下命令给应用瘦身
    $ lipo mach-o文件 -thin armv64 -output macho_armv64
  • 解压应用 ipa 包,把包内容里的 mach-o 文件替换为瘦身后的 mach-o 文件,注意名字改回原来的名字
  • 使用如下命令打包 ipa 包
    zip -ry xxx.ipa Payload
    注:Payload 为要打包的文件夹
  • 用 Xcode 的 Devices 安装瘦身后的应用

安装成功后,你会发现应用比瘦身之前少了将近一半的大小。对于非越狱手机需要做重签名的操作。

你可能感兴趣的:(iOS越狱开发 - OpenSSH连接手机)