很多朋友是通过WiFi连接使用SSH服务的,因为无线网络的不稳定性及传输速度的限制,在复制文件或用LLDB远程调试时,iOS的响应很慢,效率不高。iOS越狱社区的知名人士Nikias Bassen(@pimskeks)开发了一款可以把本地OSX/Windows端口转发到远程iOS端口的工具usbmuxd,使我们能够通过USB连接线ssh到iOS中,大大增加了ssh连接的速度,也方便了那些没有WiFi的朋友。它的用法如下,比较简单。
(1)下载并配置usbmuxd
从http://cgit.sukimashita.com/usbmuxd.git/snapshot/usbmuxd-1.0.8.tar.gz 下载usbmuxd,解压到本地。我们用到的只有python-client目录下的tcprelay.py和usbmux.py两个文件,把它们放到同一个目录下,比如,笔者的是:
/Users/snakeninny/Code/USBSSH/
(2)使用usbmuxd转发端口
usbmuxd的用法比较简单,在Terminal中输入如下命令:
/Users/snakeninny/Code/USBSSH/tcprelay.py -t 远程iOS上的端口:本地OSX/Windows上的端口
即可把本地OSX/Windows上的端口转发到远程iOS上的端口。
下面是使用场景举例。
在没有WiFi的情况下,使用USB连接到iOS,用lldb调试SpringBoard。
1)把本地2222端口转发到iOS的22端口,命令如下:
snakeninnysiMac:~ snakeninny$ /Users/snakeninny/Code/USBSSH/tcprelay.py -t 22:2222 Forwarding local port 2222 to remote port 22
2)ssh到iOS中,并用debugserver附加SpringBoard,命令如下:
snakeninnysiMac:~ snakeninny$ ssh root@localhost -p 2222 FunMaker-5:~ root# debugserver *:1234 -a "SpringBoard"
3)把本地1234端口转发到iOS的1234端口,命令如下:
snakeninnysiMac:~ snakeninny$ /Users/snakeninny/Code/USBSSH/tcprelay.py -t 1234:1234 Forwarding local port 1234 to remote port 1234
4)用lldb开始调试,命令如下:
snakeninnysiMac:~ snakeninny$ /Applications/OldXcode.app/Contents/Developer/usr/bin/lldb (lldb) process connect connect://localhost:1234
使用usbmuxd能极大提升ssh的速度,用LLDB远程连接debugserver的时间被缩短至15秒以内,强烈建议大家把usbmuxd作为ssh连接的首选方案。