Cómo habilitar OpenSSh en iOS 10.2

10

He desbloqueado con éxito el funcionamiento de mi iPhone 6s en iOS 10.2.

He instalado OpenSSH a través de Cydia y he cambiado mi contraseña predeterminada a través de MobileTerminal.

El único problema es que cuando ejecuto ssh root@my_iPhone_ip_addr , simplemente se cuelga y nunca se conecta.

He intentado la aplicación de trampolín SSH, sin embargo, todavía se cuelga.

¿Hay alguna forma en que pueda habilitar SSH en mi teléfono a través de un comando de terminal o de alguna otra forma?

    
pregunta iProgram 28.01.2017 - 14:20

4 respuestas

9
respondido por el grg 28.01.2017 - 18:19
6

Deberías usar el Dropbear incorporado. A partir de Yalu Beta 6, primero debe SSH sobre USB. Luego, después de cambiar su contraseña, puede habilitar Dropbear en otras interfaces.

Linux o macOS:

  1. Descargue los binarios de gandalf (no tuve suerte compilando) desde la página de github ocaml-usbmux . macOS: gandalf_darwin_10_11_x86_64
  2. Conecte su dispositivo a través de un cable USB y escanéelo.
  3. Coloque el udid en un archivo de mapeo. ¡Asegúrese de que device_port 22 (ssh) esté asignado!
  4. Ejecuta gandalf con tu archivo de mapeo
  5. SSH al puerto local correspondiente a device_port 22 en su archivo de mapeo.
  6. Inicia sesión con la contraseña alpina.
  7. ¡CAMBIE SU CONTRASEÑA!

Escanear

$ gandalf

Ejemplo de archivo de asignación

[{"udid":"9cdfac9f74c5e18a6eff3611c0927df5cf4f2eca",
  "name":"i11", "forwarding": [{"local_port":2000, "device_port":22},
                               {"local_port":3000, "device_port":1122}]
                               }]

Ejecutar Gandalf con archivo de mapeo

$ gandalf -m myMappingFile.txt

SSH al puerto 2000

$ ssh mobile@localhost -p 2000

Cambiar contraseña (s)

$ passwd
$ su
$ passwd root

Ahora que está en su dispositivo iOS ( su contraseña ha sido cambiada, ¿verdad? ), puede habilitar Dropbear en otras interfaces de la siguiente manera.

  1. Crea un archivo LaunchDaemon para iniciar una segunda instancia de Dropbear.
  2. Reinicia o usa launchctl load

Crear archivo LaunchDaemon:

$ cd /Library/LaunchDaemons
$ cat <<EOF > ssh10022.plist

Pega esto en el terminal:

<?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>

Escriba Ctrl-D para finalizar la entrada. Eso ahora crea el archivo ssh10022.plist

Reinicia o usa launchctl

launchctl load /Library/LaunchDaemons/ssh10022.plist

Problemas:

A Dropbear no le gustan los permisos predeterminados de iOS en el directorio de inicio móvil, por lo que la autenticación de clave SSH no funciona. Después de cada reinicio, debo iniciar sesión con contraseña y corregir los permisos:

$ chmod go-w /var/mobile

Para depurar Dropbear: Redirigir los registros de Dropbear a stderr (el siguiente ejemplo ejecuta otra instancia en el puerto 10023).

$ dropbear -E -p 10023
    
respondido por el Colin 06.02.2017 - 08:54
5

No puedes conectarte a ssh a través de wifi con el jailbreak 10.2. Usted necesita ssh a través de USB. Hay varias opciones, pero la más fácil es usar iproxy .

  1. Instalar iproxy

    brew install libimobiledevice

  2. En el terminal ahora ejecuta el siguiente comando.

    iproxy 2222 22

    Esto le permitirá reenviar todo el tráfico del puerto 2222 al puerto 22 a través de USB

  3. Ahora puedes conectarte al iPhone ejecutando ssh

    ssh root@localhost -p 2222

Observe que se conecta a localhost no a la dirección IP de su teléfono. Si todo salió bien, debería aparecer el indicador ssh.

Si no funciona, compruebe si ssh se está ejecutando en el iPhone ejecutando

telnet <iphone-ip-address-here> 22

Si no puedes conectarte, asegúrate de instalar el paquete openssh de Cydia.

    
respondido por el Joseph 12.02.2017 - 09:38
2

@Colin tiene una gran respuesta para el jailbreak de Yulu, pero hice cosas un poco diferentes que pueden ser útiles para las personas. Su respuesta se centra en crear un nuevo demonio con un nuevo nombre para que efectivamente tenga dos demonios ejecutando SSH. Una para el USB y otra para otras conexiones TCP. Quería un oyente que escuchara en todas las interfaces. También estaba en Windows y necesitaba algo que funcionara con eso, lo que Galdolf no hizo. Como resultado fui con un Python Script , que < bifurcado para asegurarte de que nunca desaparezca de mí.

Para usar esto, ejecuta:

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

El puerto 2222 anterior se asigna al puerto 22 remoto. Una vez que esté configurado, puede usar su utilidad SSH favorita para conectarse. Usé Putty .

  • Anfitrión: 127.0.0.1
  • Puerto: 2222

El nombre de usuario predeterminado de "root" y la contraseña de "alpine", pero también se puede usar un nombre de usuario de "mobile" y una contraseña de "alpine" para conectarse.

NOTA: Si no conoce la contraseña de root, use Filza para cambiar los permisos de /etc/master.passwd a 666, luego a través de SSH como usuario móvil, o utilizando su editor de archivos favorito, edite ese archivo para copiar el hash de "móvil" a "raíz" para que las contraseñas sean las mismas. (El hash para "alpine" es "/ smx7MYTQIi2M", si es necesario). Entonces deberías poder iniciar sesión como root entonces, o usar su.

Una vez que haya iniciado sesión, querrá encontrar las copias de droplist.plist que están actualmente en su máquina. Probablemente hay formas más eficientes de hacer esto, pero usé el siguiente comando:

find . | grep dropbear.plist

Que dio lugar:

./Library/LaunchDaemons/dropbear.plist
./private/var/containers/Bundle/Application/023FF836-8A0A-4593-A578-6801F2A3F34D/yalu102.app/dropbear.plist

La primera entrada es el demonio activo, pero la segunda es más importante. Es el demonio que Yulu implementa cada vez que ejecutas el jailbreak (lo que tienes que hacer con cada reinicio). Si solo edita /Library/LaunchDaemons/dropbear.plist, se reemplazará cada vez que reinicie.

Como resultado, vamos a editar el que viene empaquetado con Yulu, pero si lo descarta, notará que está en formato PLIST binario. Para solucionar este problema, necesitamos Erica Utilities para obtener plutil. A continuación, puede ejecutar:

plutil -xml dropbear.plist

Esto convertirá el dropbear.plist al formato XML. Una vez hecho esto, puede editar el archivo en cualquier editor de texto. Utilicé nano para hacer la edición real.

por ejemplo

nano dropbear.plist

Cuando edites el archivo, quieres deshacerte de "localhost:" de la última entrada de cadena. Esto hará que el oyente se ejecute en todas las interfaces en lugar de solo en la interfaz de bucle de retorno (que solo está disponible a través de USB). Como resultado, su archivo se convierte en:

<?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>

Una vez que hayas hecho eso, querrás volver a poner el archivo en formato binario:

plutil -binary dropbear.plist

En este punto, le sugiero que reinicie el dispositivo y valide que el archivo Yalu dropbear.plist se copie correctamente cuando vuelva a jailbreak:

por ejemplo

reboot

Después de reiniciar, deberías poder SSH utilizando la dirección IP de tu teléfono y el puerto estándar 22.

por ejemplo

  • Host: (IP de configuración - > WiFi - > (NOMBRE WIFI)
  • Puerto: 22
respondido por el Doug 01.12.2017 - 15:18

Lea otras preguntas en las etiquetas