简介

平常在运用 Mac 的过程中,常常会运用终端输入指令来履行一些操作。在越狱开发的过程中,相同需求在 iOS 体系上输入一些指令来履行一些任务。那么怎么才能在 iOS 体系上输入指令呢,在 iOS 上装置一个终端指令行东西,然后在 iPhone 那小小的屏幕上用触摸屏输入指令吗?尽管说理论上和实际上都是可行的,可是经过手指触摸屏幕来输入指令的方法功率比较低,也不是很便利。这儿仍是引荐在 Mac 上长途登录到 iOS 体系,这样就能够运用 Mac 的键盘输入指令到 iOS 上去履行,愈加便利,快捷。

SSL、openSSL、SSH、openSSH

SSL(Secure Sockets Layer)是一种用于在核算机网络上进行安全通讯的协议。SSL 开始由 Netscape 开发,后来发展为 TLS(Transport Layer Security)。SSL/TLS 用于在客户端和服务器之间树立安全的加密衔接,以维护敏感数据的传输,例如在网页浏览器和服务器之间的数据传输。

OpenSSL 是一个强大的、商业级的、功用完全的开源东西包,它供给了一组库和指令行东西,用于处理 SSL/TLS 协议和加密算法,是 SSL 协议的一款开源完结东西。OpenSSL 能够用于创建和办理数字证书、完结安全传输和通讯,以及进行加密和解密等操作。它不仅支持 SSL/TLS 协议,还支持多种加密算法和暗码学功用。

SSH(Secure Shell)是一种用于安全长途登录和数据传输的网络协议。它为核算机之间的通讯供给了加密和身份验证,以保证通讯的机密性和完整性。SSH 运用公钥暗码体制进行身份验证,并运用加密算法来维护数据的传输。

OpenSSH 是一个开源的 SSH 完结,它供给了 SSH 客户端和服务器的功用,用于安全长途登录、指令履行和文件传输。它包含客户端 ssh 和服务器 sshd、文件传输实用程序 scp 和 sftp 以及密钥生成东西 (ssh-keygen)、运行时密钥存储 (ssh-agent) 和许多支持程序。它是 Linux 和其他类 Unix 体系中最常见的 SSH 完结,也支持其他操作体系。

SSL 最早呈现于 1994 年,用于 Web 浏览器和服务器之间的安全通讯。OpenSSL 和 SSH 都起源于 1995 年,OpenSSL 是一个加密东西包,而 SSH 是用于安全长途登录和数据传输的协议。OpenSSH 是 SSH 协议的开源完结,起源于 1999 年,为 SSH 供给了广泛运用的完结。

OpenSSH 一般依赖于 OpenSSL。OpenSSH 运用 OpenSSL 库来完结加密和安全功用,包含加密通讯、密钥生成、数字证书处理等。OpenSSL 供给了各种加密算法和暗码学功用,使 OpenSSH 能够树立安全的 SSH 衔接,并维护通讯数据的机密性和完整性。在大多数状况下,装置 OpenSSH 时,体系会自动装置或链接到已经装置的 OpenSSL 库。这样,OpenSSH 就能够运用 OpenSSL 的功用来完结加密和安全性,而不必从头完结这些复杂的加密算法和协议。

因而,能够说 OpenSSH 依赖于 OpenSSL,OpenSSL 供给了 OpenSSH 所需的加密和安全功用,使得 OpenSSH 成为一种安全、可靠的长途登录和数据传输东西。这些安全协议和东西关于维护通讯和数据安全至关重要。

实践

对以上名词概念有了根本的了解之后,咱们能够进行实践操作。假如感觉仍是迷迷糊糊也不要紧,实践起来就会感觉简略多了。主要是对 OpenSSH 这个开源库供给的常用指令的运用。Mac 体系自带了这个东西所以不需求进行装备,而 iOS 体系上默许是没有装置这个东西的,包含越狱之后的 iOS 也没有,所以需求先下载装置这个东西。

装置过程很简略,如下图所示,在 Cydia 上搜索 OpenSSH 下载并按照提示进行装置就好了。

从 Mac 远程登录到 iPhone

装置好之后,就能够在 Mac 上长途登录到越狱 iOS 了。iOS 体系默许供给了两个用户,一个是 root 用户,是 iOS 中最高权限的用户,咱们在逆向开发过程中根本都是运用这个用户。还有一个是 mobile 用户,是一般权限用户,iOS 平常进行 APP 装置,卸载根本都是运用这个用户,可是咱们在逆向开发中很少或许根本不会运用到这个用户,这儿有个了解就够了。

Cydia 首页有 OpenSSH 拜访教程,这个文档具体的记载了怎么从 Mac 长途登录到 iOS 设备上,并且也供给了修正默许暗码的办法。主张英文不错的同学直接阅读这篇文档,不想看的就看我后边的介绍也能够。文档方位如下图所示

从 Mac 远程登录到 iPhone

经过默许账号暗码登录到 iPhone

ssh 供给了两种登录到服务器的方法,第一种是运用账号和暗码。第二种是免暗码登录。下面先介绍第一种

  1. 越狱 iPhone 在 Cydia 上装置 OpenSSH
  2. 承认 iPhone 和 Mac 电脑在同一个局域网下,在 Mac 翻开终端,输入以下指令
    ssh root@iPhone的IP地址
    
    第一次衔接会呈现 Are you sure you want to continue connecting (yes/no/[fingerprint])? 提示,输入 yes 承认进行衔接
  3. 输入默许的初始暗码 alpine ,这儿终端为了安全并不会显示暗码的明文
  4. 之后就会看到终端切换到了 iPhone:~ root# 用户,代表成功登录到长途 iPhone 手机的 root 用户上了。这个时分,你在 Mac 终端输入的指令都会被发送到 iPhone 上,如下图
    从 Mac 远程登录到 iPhone
    假如你觉得还不过瘾,能够输入 reboot 指令,体会一下长途操纵手机的快乐(重启之后,你或许需求从头越狱一下 iPhone 了)
  5. 输入 exit 退出登录

刚刚咱们登录的是 root 用户。在 iOS 中,除了 root 用户,还有一个 mobile 用户。其间 root 用户是 iOS 中最高权限的用户。mobile 是一般权限用户,其实平常越狱调试过程中,很少会运用这个 mobile 用户,这儿仅仅介绍一下。

能够成功登录 iPhone 之后,主张修正一下用户的默许暗码,已然做逆向开发了,当然对安全也要留意一点。在登录 root 用户之后,输入:passwd 能够修正 root 用户的暗码,输入 passwd mobile 能够修正 mobile 用户的暗码。

经过免暗码方法登录到 iPhone

OpenSSH 除了默许的账号暗码登录的方法,还供给了免暗码登录的方法。需求进一步完结一些装备才能够完结。服务器(在当前状况下,iPhone是服务器,Mac是客户端)的 ~/.ssh 目录下需求添加一个 authorized_keys 文件,里面记载能够免密登录的设备的公钥信息。当有客户端(Mac)登录的时分,服务器会查看 ~/.ssh/authorized_keys 文件中是否记载了当前登录的客户端的公钥信息,假如有就直接登录成功,没有就要求输入暗码。所以咱们要做的便是将 Mac 设备的公钥信息追加到 iPhone 的 authorized_keys 文件内容的最后边。追加是为了不影响其他的设备。完结这个操作需求先保证咱们的 Mac 设备上已经有 ssh 生成的公钥文件。

翻开 Mac 终端,输入 ls ~/.ssh 查看是否已经存在 id_rsa.pub 公钥文件,.pub便是公钥文件的后缀

从 Mac 远程登录到 iPhone

假如没有看到公钥文件,需求运用 ssh-keygen 指令生成该文件。按回车键承受默许选项,或许根据需求输入新的文件名和暗码。这将生成一个公钥文件(id_rsa.pub)和一个私钥文件(id_rsa)。

运用 SSH 仿制公钥到长途服务器。运用以下指令将本地核算机(Mac)上的公钥仿制到长途服务器(iPhone)。请将user替换为您的长途服务器用户名,以及remote_server替换为服务器的域名或IP地址。

ssh-copy-id user@remote_server

从 Mac 远程登录到 iPhone

在长途服务器(iPhone)上设置正确的权限。保证长途服务器上的~/.ssh文件夹权限设置为 700,并将~/.ssh/authorized_keys文件的权限设置为 600。这样能够保证SSH能够正确识别公钥并允许免暗码登录。如下图所示:

从 Mac 远程登录到 iPhone

.ssh 文件夹前面的 drwx------ 是 Linux 和类 Unix 体系中表明文件或目录权限的一种格局。在这个格局中,每一组由10个字符组成,代表文件或目录的不同权限。让咱们逐一解释这些字符的意义:

  1. 第一个字符:文件类型

    • d 表明目录(directory)
    • - 表明一般文件
    • l 表明符号链接(symlink)
    • b 表明块设备文件(block device)
    • c 表明字符设备文件(character device)
    • s 表明套接字(socket)
    • p 表明命名管道(named pipe)
  2. 接下来的三个字符:文件所有者的权限

    • r 表明读权限(read)
    • w 表明写权限(write)
    • x 表明履行权限(execute)
  3. 接下来的三个字符:文件所有者地点组的权限

    • r 表明读权限(read)
    • w 表明写权限(write)
    • x 表明履行权限(execute)
  4. 最后三个字符:其他用户的权限

    • r 表明读权限(read)
    • w 表明写权限(write)
    • x 表明履行权限(execute)

所以,drwx------ 表明这是一个目录,并且具有以下权限:

  • 文件所有者具有读、写和履行权限。
  • 文件所有者地点组没有任何权限。
  • 其他用户没有任何权限。

后边 9 个字符分为三组,每组从左至右假如有对应的权限便是421相加起来便是 7 后边都是0。所以 .ssh 文件夹的权限是正确的值 700,假如不是 700 的运用 chmod 700 .ssh 进行提权。authorized_keys 文件的权限是 rw 便是 420 相加起来便是 6 。后边都是 0,所以 authorized_keys 的权限也是正确的值 600。相同假如不是 600,运用 chmod 600 authorized_keys 指令修正权限。

装备完结后,您现在能够运用 SSH 免暗码登录到长途服务器(iPhone)。在 Mac 上,运用以下指令衔接到长途服务器:

ssh root@10.10.20.155

这将直接衔接到长途服务器,而无需输入暗码。

从 Mac 远程登录到 iPhone

经过 USB 有线的方法登录到 iPhone

装备为免暗码登录之后,还能够进一步运用 USB 有线衔接的方法登录到手机。假如你常常运用 WiFi 这种方法长途登录调试就会发现偶然会碰到指令输入,呼应卡顿,反应慢的状况,这样的体验明显让人感到不爽。所以,在大部分状况下,更引荐运用 USB 有线衔接登录到 iPhone 上,这样运用的过程中,就像在本地输入指令操作一样流畅。

iproxy 是一个用于端口转发的指令行东西。它一般用于在 iOS 设备和核算机之间树立端口映射,从而将 iOS 设备上运行的服务露出到核算机上。这关于开发者来说非常有用,因为能够经过本地核算机拜访 iOS 设备上运行的服务,而无需将服务部署到公共网络上。

iproxyusbmuxd 的一部分,后者是一个用于衔接和办理 iOS 设备的 USB 通讯的守护进程。usbmuxd 允许经过 USB 衔接与 iOS 设备进行通讯,并且iproxy 则负责在本地核算机和iOS设备之间树立端口转发。

一般,您能够在指令行中运用 iproxy 指令来树立端口转发,例如:

iproxy local_port device_port

其间,local_port 是本地核算机上的端口号,device_port 是 iOS 设备上的端口号。履行此指令后,iOS 设备上的服务将经过 device_port 映射到本地核算机上的 local_port

请留意,运用 iproxy 需求先装置 libusbmuxd 包。在 macOS 上,您能够运用 Homebrew 来装置 libusbmuxd

brew install libusbmuxd

装置好之后,就能够运用 iproxy 指令了,运用 iproxy 将本机 10010 端口和 USB 设备的 22 端口进行映射的指令如下:

iproxy 10010 22

从 Mac 远程登录到 iPhone

这儿本机的端口 10010 能够设置为你想要的其他端口,可是不能是体系保留的端口(体系保留的端口有哪些,能够看百度的介绍)。端口转发设置完结之后,这个终端就不要封闭,也不要管它了,新建另一个端口进行 ssh 登录。此时,需求给 ssh 加上指定端口参数,指令如下:

ssh -p 10010 root@localhost

相同第一次运用这种方法树立衔接会给出提示,输入 yes 承认

从 Mac 远程登录到 iPhone

之后,在 iPhone 设备上输入指令调试时,再也不会遇到卡顿,慢,推迟的现象啦。玩得高兴~