Answers:
OpenSSH与iOS 10.2不兼容,将在以后的越狱版本中破坏某些功能。您应该同时卸载OpenSSH和OpenSSL(相关性)。
您应该使用内置的Dropbear。从Yalu Beta 6开始,您需要首先通过USB进行SSH。然后,更改密码后,您可以在其他界面上启用Dropbear。
Linux或macOS:
扫瞄
$ gandalf
样本映射文件
[{"udid":"9cdfac9f74c5e18a6eff3611c0927df5cf4f2eca",
"name":"i11", "forwarding": [{"local_port":2000, "device_port":22},
{"local_port":3000, "device_port":1122}]
}]
使用映射文件运行Gandalf
$ gandalf -m myMappingFile.txt
SSH到端口2000
$ ssh mobile@localhost -p 2000
更改密码
$ passwd
$ su
$ passwd root
现在您已经在iOS设备中(密码已更改,对吗?),您可以在其他界面上启用Dropbear,如下所示。
launchctl load
创建LaunchDaemon文件:
$ cd /Library/LaunchDaemons
$ cat <<EOF > ssh10022.plist
将此粘贴到终端中:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>SSH port 10022</string>
<key>Program</key>
<string>/usr/local/bin/dropbear</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/dropbear</string>
<string>-F</string>
<string>-R</string>
<string>-p</string>
<string>10022</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
</dict>
</plist>
键入Ctrl-D结束输入。现在将创建文件ssh10022.plist
重新启动或使用launchctl
launchctl load /Library/LaunchDaemons/ssh10022.plist
问题:
Dropbear不喜欢移动主目录上的iOS默认权限,因此SSH密钥身份验证不起作用。每次重新启动后,我必须使用密码登录并修复权限:
$ chmod go-w /var/mobile
调试Dropbear:将Dropbear日志重定向到stderr(下面的示例在端口10023上运行另一个实例)。
$ dropbear -E -p 10023
您无法通过10.2越狱通过wifi连接到ssh。您需要通过USB SSH。它们是几种选择,但最容易使用iproxy
。
安装iproxy
brew install libimobiledevice
现在在终端上运行以下命令。
iproxy 2222 22
这将使您能够通过USB将所有流量从端口2222转发到端口22
现在您可以通过运行ssh连接到iPhone
ssh root@localhost -p 2222
请注意,您连接的localhost
不是手机的IP地址。如果一切顺利,应该显示ssh提示。
如果不起作用,请通过运行以下命令检查ssh是否在iPhone上运行
telnet <iphone-ip-address-here> 22
如果无法连接,请确保openssh
从Cydia 安装了软件包。
Dropbear
,就我而言,我必须安装该OpenSSH
软件包,原因是我建议其他说明似乎基于Beta越狱
@Colin对于Yulu越狱有一个很好的答案,但是我做的事情有所不同,这可能对人们有用。他的答案集中在使用新名称创建新的守护程序,以便有效地使您拥有两个运行SSH的守护程序。一个用于USB,另一个用于其他TCP连接。我想要一个可以在所有接口上进行监听的监听器。我也在Windows上,需要与之兼容的东西,而Galdolf却没有。结果,我使用了Python脚本,我分叉了它以确保它永远不会消失在我身上。
要使用此功能,请运行:
python usbmuxd\pythonclient\tcprelay.py -t 22:2222
上面将本地端口2222映射到远程端口22。设置完成后,您可以使用自己喜欢的SSH实用程序进行连接。我使用了Putty。
默认用户名“ root”和密码“ alpine”,但也可以使用用户名“ mobile”和密码“ alpine”进行连接。
注意:如果您不知道root密码,请使用Filza将/etc/master.passwd的权限更改为666,然后通过SSH作为移动用户,或使用您喜欢的文件编辑器,编辑该文件以复制哈希从“移动”到“根”,以使密码相同。(如果需要,“高山”的哈希为“ / smx7MYTQIi2M”)。然后,您应该能够以root用户身份登录,或使用su。
登录后,您将要查找当前计算机上的droplist.plist副本。可能有更有效的方法来执行此操作,但是我使用了以下命令:
find . | grep dropbear.plist
产生了:
./Library/LaunchDaemons/dropbear.plist
./private/var/containers/Bundle/Application/023FF836-8A0A-4593-A578-6801F2A3F34D/yalu102.app/dropbear.plist
第一个条目是活动的守护程序,但是第二个条目更为重要。它是每次运行越狱时Yulu都将其放置在后台的守护进程(每次重新启动都必须这样做)。如果仅编辑/Library/LaunchDaemons/dropbear.plist,则每次重新启动时将替换它。
因此,我们将编辑与Yulu一起打包的文件,但是如果您将文件放在目录中,则会注意到该文件为二进制PLIST格式。为了解决这个问题,我们需要 Erica Utilities来获取plutil。然后可以运行:
plutil -xml dropbear.plist
这会将dropbear.plist转换为XML格式。完成此操作后,您可以在任何文本编辑器中编辑文件。我用nano进行了实际的编辑。
例如
nano dropbear.plist
当您编辑文件时,您要摆脱最后一个字符串条目中的“ localhost:”。这将使侦听器在所有接口上运行,而不是仅在环回接口上运行(仅可通过USB使用)。结果,您的文件变为:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>ShaiHulud</string>
<key>Program</key>
<string>/usr/local/bin/dropbear</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/dropbear</string>
<string>-F</string>
<string>-R</string>
<string>-p</string>
<string>22</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
完成后,您将需要将文件放回二进制格式:
plutil -binary dropbear.plist
在这一点上,我建议您重新启动设备并验证Yalu dropbear.plist文件在重新越狱后是否已正确复制:
例如
reboot
重新启动后,您应该能够使用手机的IP地址和标准端口22进行SSH。
例如