如何在iOS 10.2上启用OpenSSh


9

我成功越狱了在iOS 10.2上运行的iPhone 6s。

我已经通过Cydia安装了OpenSSH,并通过MobileTerminal更改了默认密码。

唯一的问题是,当我运行时ssh root@my_iPhone_ip_addr,它只是挂起而从未连接。

我已经尝试过SSH切换跳板应用程序,但是仍然挂起。

有什么方法可以通过终端命令或其他方式在手机上启用SSH?


我使用iPhone隧道通过USB通过ssh通过SSH连接到我的设备:code.google.com/archive/p/iphonetunnel-mac/downloads
newenglander

Answers:



6

您应该使用内置的Dropbear。从Yalu Beta 6开始,您需要首先通过USB进行SSH。然后,更改密码后,您可以在其他界面上启用Dropbear。

Linux或macOS:

  1. ocaml-usbmux github页面下载gandalf二进制文件(我的运气是零)。macOS:gandalf_darwin_10_11_x86_64
  2. 通过USB电缆连接设备,然后进行扫描。
  3. 将被调查者放入映射文件中。确保device_port 22(ssh)已映射!
  4. 使用您的映射文件运行gandalf
  5. SSH到映射文件中与device_port 22对应的local_port。
  6. 使用密码alpine登录。
  7. 更改您的密码!!!

扫瞄

$ 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,如下所示。

  1. 创建一个LaunchDaemon文件以启动Dropbear的第二个实例。
  2. 重新启动或使用 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

6

您无法通过10.2越狱通过wifi连接到ssh。您需要通过USB SSH。它们是几种选择,但最容易使用iproxy

  1. 安装iproxy

    brew install libimobiledevice

  2. 现在在终端上运行以下命令。

    iproxy 2222 22

    这将使您能够通过USB将所有流量从端口2222转发到端口22

  3. 现在您可以通过运行ssh连接到iPhone

    ssh root@localhost -p 2222

请注意,您连接的localhost不是手机的IP地址。如果一切顺利,应该显示ssh提示。

如果不起作用,请通过运行以下命令检查ssh是否在iPhone上运行

telnet <iphone-ip-address-here> 22

如果无法连接,请确保openssh从Cydia 安装了软件包。


可能不应该建议安装OpenSSH,因为越狱的作者qwertyoruiop特别指出不要安装OpenSSH。
科林

1
我无法使用进行连接Dropbear,就我而言,我必须安装该OpenSSH软件包,原因是我建议其他说明似乎基于Beta越狱
Joseph

这不是真的。您可以使用10.2越狱通过Wifi通过SSH连接。它只需要您更新dropbear配置即可在所有接口上进行监听。
Doug

@Doug编辑答案,并说明如何通过wifi启用SSH。
约瑟夫

3

@Colin对于Yulu越狱有一个很好的答案,但是我做的事情有所不同,这可能对人们有用。他的答案集中在使用新名称创建新的守护程序,以便有效地使您拥有两个运行SSH的守护程序。一个用于USB,另一个用于其他TCP连接。我想要一个可以在所有接口上进行监听的监听器。我也在Windows上,需要与之兼容的东西,而Galdolf却没有。结果,我使用了Python脚本,我分叉了它以确保它永远不会消失在我身上。

要使用此功能,请运行:

python usbmuxd\pythonclient\tcprelay.py -t 22:2222

上面将本地端口2222映射到远程端口22。设置完成后,您可以使用自己喜欢的SSH实用程序进行连接。我使用了Putty

  • 主持人:127.0.0.1
  • 端口:2222

默认用户名“ 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。

例如

  • 主机:(从设置中IP-> WiFi->(WIFI名称)
  • 端口:22

感谢您阐明所有步骤!这使得它更具前瞻性。我试过>找到。| grep dropbear.plist可以在LiberIOS越狱中找到dropbear配置,但是我不知道他们将配置放在哪里。
科林

1
尝试浏览至:/ Library / LaunchDaemons /,看看是否可以找出它们在其中使用的名称。他们很可能在各处使用相同的名称。该文件夹是所有守护程序脚本所在的文件夹,因此,如果它们具有现有的守护程序,则必须在该文件夹中对其进行引用。
Doug

在运行find之前忘了cd /。| grep dropbear.plist。咄。
Colin

这使我意识到我们可以建议在使用Impactor将其上传到设备之前,先在Yalu IPA中破解Dropbear.plist。但是话又说回来,虽然人们可以在macOS上使用Xcode直接编辑二进制.plist文件,但我不知道Windows或Linux中是否存在这样的功能。
科林

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.