Mac远程登录到iOS设备
# 安装OpenSSH
本文内容的前提是设备已越狱!
Secure Shell(SSH)
是建立在应用层基础上的安全协议,用于计算机之间的加密登录,可以在不安全的网络中为网络服务提供安全的传输环境
在 Cydia
搜索 OpenSSH
,找到后安装即可
# 账号
root
:最高权限账号,$HOME
为/var/root
- 账号:
root
- 密码:
alpine
修改登录密码
- 登录
root
账号 - 修改
root
账号的密码,终端输入:passwd
# 远程登录
# 方式一:账号密码
前往iOS设备的 "设置" -> "Wi-Fi" 页面,找到当前已经连接的网络,查看其 IP
地址
如上图显示的 IP
地址为 192.168.10.104
,则在终端内输入:
ssh root@192.168.10.104
输入密码:alpine
# 方式二:免密码登录
相较于方式一,不用每次连接 SSH
时都提示输入密码
角色 | 设备 | 文件 |
---|---|---|
客户端 | Mac | 公钥 ~/.ssh/id_rsa.pub 私钥 ~/.ssh/id_rsa |
服务器端 | iPhone | 授权文件 ~/.ssh/authorized_keys |
# 1、生成秘钥对
ssh-keygen -t rsa
# OpenSSH默认生成的是RSA密钥,-t 参数是指定密钥类型
# 所以上面的命令可以省略 -t 参数:ssh-keygen
# 2、将公钥上传至 iOS
设备
方式一:自动(推荐)
执行如下命令,输入密码即可
ssh-copy-id root@192.168.10.104
方式二:手动
# 该方式会直接覆盖 authorized_keys 文件
scp ~/.ssh/id_rsa.pub root@192.168.10.104:/var/root/.ssh/authorized_keys
鉴于会将 authorized_keys
文件覆盖,所以最好还是先将 id_rsa.pub
上传到设备后再追加到 authorized_keys
# 上传公钥至 root 的家目录
scp ~/.ssh/id_rsa.pub root@192.168.10.104:~
# 登录 iOS 设备
ssh root@192.168.10.104
# 向 authorized_keys 追加内容
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
# 移除上传的公钥
rm ~/id_rsa.pub
现在再次进行登录,便无须输入密码即可直接登录成功了
# 3、注意事项
如果 iOS
设备上不存在 /var/root/.ssh
目录,会报如下错误
scp: /var/root/.ssh/authorized_keys: No such file or directory
需要先登录设备创建该目录
xunfengteki-iPad:~ root# cd /var/root/
xunfengteki-iPad:~ root# mkdir .ssh
如果在经过配置后还是要求输入密码,那可能是文件的权限不足,需要登录到 iOS
设备后,按如下命令对这些文件或目录进行权限调整即可
chmod 755 ~
# 设置 .ssh 目录权限
chmod 755 ~/.ssh
# 设置 authorized_keys 权限
chmod 644 ~/.ssh/authorized_keys
# USB连接设备
前面所提及的都是通过
Wi-Fi
方式连接设备,这种方式会有个很大的弊端,那就是当网络不通畅时会卡顿,为了保证传输速度,可以通过USB
连接的方式解决这个问题
# 1、安装 usbmuxd
brew install usbmuxd
# 2、端口映射
本地端口 2222
映射 远程端口 22
iproxy 2222 22 [设备UDID]
如果有多台 iOS
设备连接到同一台 Mac
上,则需要在命令后面加上设备的 UDID
,如果只有一台时,则可省略
# 3、连接设备
ssh -p 2222 root@127.0.0.1
# 封装常用命令
Shuttle: 简易的终端命令快捷菜单,官网:http://fitztrev.github.io/shuttle/ (opens new window)
"iOS": [
{
"USB连接iPhone": [
{
"cmd": "iproxy 2222 22",
"inTerminal": "new",
"name": "1.USB映射SSH端口"
},
{
"cmd": "ssh root@localhost -p 2222",
"inTerminal": "new",
"name": "2.连接iPhone"
}
]
}
]
效果:
现在只需要按顺序点击 iOS
-> USB连接iPhone
下的 1.USB映射SSH端口
和 2.连接iPhone
,即可快速使用 usb
连接我们的 iOS
设备,提升效率。
# 中文问题
iOS
的终端在默认情况下是不支持中文的输入和显示,当你输入中文时会自动清空当前输入的所有内容。
解决方案:在家目录下新建 .inputrc
文件
touch ~/.inputrc
文件内容:
# 不将中文字符转化为转文序列
set convert-meta off
# 允许向终端输出中文
set output-meta on
# 允许向终端输入中文
set meta-flag on
set input-meta on
如果想要 iOS
设备的终端上编辑文件内容,需要在 Cydia
搜索 Vi IMproved
并安装
安装完成后,在终端输入:
vi ~/.inputrc
按 i
切换到输入模式,将上述文件内容粘贴进去,按 Esc
切换到末行模式,输入 :wq
回车保存退出。
现在中文是可以输入了,但是显示还是有问题的,比如我创建了一个 测试.txt
,显示的是 \346\265\213\350\257\225.txt
解决方案:通过 Cydia
搜索 Locale Profiles in UTF-8
并安装即可(软件源 BigBoss
:http://apt.thebigboss.org/repofiles/cydia/
)
这时退出 iOS
终端,还重新进入即可解决!
点击详情页底部的 文件系统内容
可以看到该插件帮我们在 /usr/share/locale
目录下安装了中文语言包,并在 /etc/profile.d/
目录下创建了 localeutf8.sh
文件,设置当前语言为 en_US.UTF-8
xunfengtekiiPhone:~ root# cat /etc/profile.d/localeutf8.sh
export LANG="en_US.UTF-8"
