Cómo habilitar OpenSSh en iOS 10.2

He liberado con éxito mi iPhone 6s con iOS 10.2.

Instalé OpenSSH a través de Cydia y cambié 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.

Probé la aplicación de trampolín de alternancia SSH, sin embargo, todavía se bloquea.

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

Uso iPhone Tunnel para conectarme a mi dispositivo a través de ssh a través de USB: code.google.com/archive/p/iphonetunnel-mac/downloads

Respuestas (4)

Este tweet se realizó antes del lanzamiento de 10.2 Jailbreak, por lo que estoy bastante seguro de que se refiere al altamente inestable 10.1.1 Jailbreak. ¿Tienes una fuente actualizada?
Siga los consejos de grgarside: desinstale OpenSSH. Consulte mi publicación para obtener instrucciones paso a paso para recuperar su ssh.

Deberías usar el Dropbear incorporado. A partir de Yalu Beta 6, primero debe SSH a través de 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 al compilar) de la página ocaml-usbmux github. macOS: gandalf_darwin_10_11_x86_64
  2. Conecte su dispositivo mediante 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 local_port correspondiente al device_port 22 en su archivo de mapeo.
  6. Inicie sesión con la contraseña alpine.
  7. ¡¡¡CAMBIA TU CONTRASEÑA!!!

Escanear

$ gandalf

Archivo de mapeo de muestra

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

Ejecute Gandalf con el 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. Cree un archivo LaunchDaemon para lanzar una segunda instancia de Dropbear.
  2. Reiniciar o usarlaunchctl load

Crear archivo LaunchDaemon:

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

Pega esto en la 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

Reinicie o use launchctl

launchctl load /Library/LaunchDaemons/ssh10022.plist

Asuntos:

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, tengo que iniciar sesión con contraseña y corregir los permisos:

$ chmod go-w /var/mobile

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

$ dropbear -E -p 10023

No puede conectarse a ssh a través de wifi con el jailbreak 10.2. Necesita ssh a través de USB. Son varias opciones pero la más fácil es usar iproxy.

  1. instalar iproxy

    brew install libimobiledevice

  2. En la terminal ahora ejecute el siguiente comando.

    iproxy 2222 22

    Esto le permitirá reenviar todo el tráfico desde el 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 localhostno se conecta a la dirección IP de su teléfono. Si todo salió bien, debería aparecer el indicador ssh.

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

telnet <iphone-ip-address-here> 22

Si no puede conectarse, asegúrese de instalar el opensshpaquete de Cydia.

Probablemente no debería sugerir instalar OpenSSH porque el autor del jailbreak, qwertyoruiop, dice específicamente que no se instale OpenSSH.
No pude conectarme usando Dropbear, en mi caso tuve que instalar el OpenSSHpaquete, esa es la razón por la que sugerí que, dado que las otras instrucciones parecen estar basadas en el jailbreak beta
Esto no es verdad. PUEDE conectarse en SSH a través de Wifi con el Jailbreak 10.2. Solo requiere que actualice la configuración de dropbear para que escuche en todas las interfaces.
@Doug edite la respuesta y ponga las instrucciones para habilitar SSH a través de wifi.

@Colin Tiene una gran respuesta para el jailbreak de Yulu, pero hice las cosas un poco diferentes que pueden ser útiles para las personas. Su respuesta se enfoca en crear un nuevo demonio con un nuevo nombre para que efectivamente tenga dos demonios ejecutando SSH. Uno para el USB y otro 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 no hizo Galdolf. Como resultado, opté por Python Script , que bifurqué para asegurarme de que nunca desaparezca de mí.

Para usar esto, ejecute:

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

Lo anterior asigna el puerto local 2222 al puerto remoto 22. Una vez que esto 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 "móvil" y una contraseña de "alpine" para conectarse.

NOTA: Si no conoce la contraseña raíz, 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ía poder iniciar sesión como root, o usar su.

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

find . | grep dropbear.plist

Lo que arrojó:

./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 pone en marcha cada vez que ejecutas el jailbreak (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 buscas el archivo, notarás que está en un formato PLIST binario. Para solucionar esto, necesitamos Erica Utilities para obtener plutil. A continuación, puede ejecutar:

plutil -xml dropbear.plist

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

p.ej

nano dropbear.plist

Cuando está editando el archivo, desea deshacerse del "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 invertido (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 haya hecho eso, querrá 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 dropbear.plist de Yalu se haya copiado correctamente cuando vuelva a hacer jailbreak:

p.ej

reboot

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

p.ej

  • Anfitrión: (IP desde Configuración -> WiFi -> (NOMBRE DE WIFI)
  • Puerto: 22
¡Gracias por explicar todos tus pasos! Eso lo hace mucho más preparado para el futuro. Intenté > encontrar. | grep dropbear.plist para encontrar la configuración de dropbear en el jailbreak de LiberIOS, pero no tengo ni idea de dónde pusieron la configuración.
Intente navegar a: /Library/LaunchDaemons/ y vea si puede averiguar el nombre que usaron allí. Lo más probable es que usaran el mismo nombre en todas partes. Esa carpeta es donde están todas las secuencias de comandos del daemon, por lo que si tienen un daemon existente, será necesario hacer referencia allí.
Olvidé cd / antes de ejecutar find . | grep dropbear.plist. Duh.
Esto me hizo darme cuenta de que podíamos sugerir piratear Dropbear.plist en Yalu IPA antes de cargarlo en el dispositivo con Impactor. Pero, de nuevo, aunque uno puede editar directamente archivos binarios .plist con Xcode en macOS, no sé si tales instalaciones existen en Windows o Linux.