iOS越狱开发 - OpenSSH连接手机

2018-06-14  本文已影响0人  异想天不开_9950

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

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

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

iOS 下有两个用户

删除SSH服务器对应的公钥

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

修改ssh登录密码

关闭openSSH连接

$exit

SSH

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

SSH通讯过程

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 root@101.2.79.32
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使用公钥登录

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

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

$ssh-keygen

一路回车就可以,然后在

$cd ~/.ssh

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

$ssh-copy-id root@101.2.79.32

接着我们再次登录服务器

$ssh root@101.2.79.32

我们会欣喜的发现可以直接登录了,不需要再输入密码了。
登录服务器后,我们可以看一下 .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 tcprelay.py -t 22:1122
//1122是随便写的一个本地没有占用的端口

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

ssh -p 1122 root@127.0.0.1
//注:这里 127.0.0.1 也可以改为 localhost

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

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

通过Shell脚本简化步骤

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

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

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

拷贝文件

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

应用瘦身

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

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

上一篇 下一篇

猜你喜欢

热点阅读