6 votos

No se puede hacer ssh Root@localhost en un iPad con jailbreak y iOS 8.1

Yo jailbreaked (no para los piratas) mi iPad 4 (iOS 8.1) hace varias semanas y encontró que no puede ssh Root@127.0.0.1 a través de Prompt 1 o 2 en el iPad. Incluso no puedo conectarme a través de la IP de la LAN (por ejemplo, 192.186.X.X). Sin embargo, no hay problema si ssh Root@LAN IP en mi iPhone o Mac en la misma LAN.

Por cierto, yo era capaz de ssh Root@localhost en el iPad jailbreaked cuando se ejecutaba iOS 6.1. También está bien si ya he ssh conectado al iPad en mi Mac, y ssh Root@127.0.0.1 de nuevo.

La salida de netstat en el iPad:

Surface-Pro:~ root# netstat -an|grep .22  
tcp4       0     28  172.22.29.64.22        172.22.26.158.47927    ESTABLISHED  
tcp4       0      0  172.22.29.64.50293     17.110.228.29.5223     ESTABLISHED  
tcp4       0      0  *.22    

¿Alguien sabe la razón por la que el iPad no puede conectarse a sí mismo en las aplicaciones? (¿Quizá el modelo de sandbox/contenedores ha cambiado desde iOS 8?)

7voto

Lamnk Puntos 123

Una alternativa mucho mejor que ejecutar Prompt como Root, es crear otro sshd escuchando un puerto superior a 1024.

En este ejemplo he utilizado el puerto 10022.

  • Copiar /Library/LaunchDaemons/com.openssh.sshd.plist a /Library/LaunchDaemons/com.openssh.sshd2.plist
  • Cambiar el Label y el SockServiceName en com.openssh.sshd2.plist añadiendo 2 a ssh / sshd :

    • com.openssh.sshd -> com.openssh.sshd2
    • ssh -> ssh2
  • Añade las siguientes líneas a /etc/services :

    ssh2 10022/udp # SSH Remote Login Protocol ssh2 10022/tcp # SSH Remote Login Protocol

Diferencias para las versiones de iOS:

iOS 12.1.2 / unc0ver, iOS 13.3.1 / checkra1n:

  • de esta respuesta opción nº 2.
  • copie el plist como arriba, pero cambie el SockServiceName en com.openssh.sshd2.plist de ssh simplemente el nuevo número de puerto 10022 . La sección tendrá el siguiente aspecto:

    <key>Sockets</key> <dict> <key>Listeners</key> <dict> <key>SockServiceName</key> <string>10022</string> </dict> </dict>

iOS 12.4 / chimera.sh

  • no copie el archivo plist
  • en su lugar, edite /etc/ssh/sshd_config como root. Detalles de este artículo
  • eliminar el comentario delante de Port 22
  • añadir otra línea debajo para Port 10022

Todas las versiones de iOS:

  • Reiniciar el dispositivo (o launchctl load com.openssh.sshd2.plist si no quiere reiniciar)
  • Conéctese a través del puerto 10022 en lugar del 22

Si ha instalado bash , coreutils y sed puedes automatizarlo con este script:

#!/bin/bash
cd /Library/LaunchDaemons
cp com.openssh.sshd{,2}.plist
sed -i'' '/<key>Label<\/key>/{N;s/sshd/sshd2/}' com.openssh.sshd2.plist
sed -i'' '/<key>SockServiceName<\/key>/{N;s/ssh/ssh2/}' com.openssh.sshd2.plist

cd /etc
if ! grep ssh2 services; then
    cat >> services <<EOF
ssh2              10022/udp     # SSH Remote Login Protocol
ssh2              10022/tcp     # SSH Remote Login Protocol
EOF
fi

0 votos

Esto funciona con Coda 2 en el iPad. Mi solución a continuación no funciona porque a Coda 2 no le gusta ser lanzado como una aplicación Root.

0 votos

Advertencia: Intenté esto en iOS 9.3.3 con el Pangu semi-jb y se rompió el Jailbreak. No he podido entrar en el modo jailbreak y he tenido que restaurar mi dispositivo :\N -.

4voto

Colin Puntos 151

El motivo es que iOS 7 y 8 hacen un sandbox de las aplicaciones de la App Store. La solución más sencilla es la siguiente (adaptada de http://blog.funroll.co/ios-7-Jailbreak-enable-ssh-to-localhost )

  1. Instalar OpenSSH a través de Cydia

  2. Entra en la misma red wifi que tu Mac

  3. Coge tu dirección IP desde el icono de Ajustes -> Wifi -> (i)

  4. Abra el Terminal en su mac y ssh Root@

  5. La contraseña por defecto es alpina. Utilice passwd para cambiarla si aún no lo ha hecho

  6. establecer una contraseña de acceso para el nombre de usuario del móvil si aún no lo ha hecho

    passwd móvil

  7. ir al directorio de aplicaciones

    cd /var/mobile/Containers/Bundle/Application/ <-- iOS 8

    cd /var/mobile/Applications <-- iOS 7

  8. ¡encontrar Prompt!

    ls ./*/*/Prompt*

    Esto le dará algo como

    ./3EE7B167-AF7B-497B-9C8E-EAC96F4AF0D9/Prompt 2.app/Prompt 2

  9. ¡mover el Prompt!

    mv "./3EE7B167-AF7B-497B-9C8E-EAC96F4AF0D9/Prompt 2.app" /Aplicaciones/

    (Utilice su propia ruta, en lugar de 3EE7B167-AF7B-497B-9C8E-EAC96F4AF0D9)
    También puede chown root:admin -R /Applications/Prompt\ 2 .

  10. Vaya a la pantalla de inicio del dispositivo y elimine el icono de Prompt

  11. Reinicia manteniendo pulsado home y sleep/wake hasta que veas el icono de Apple

  12. Vuelve a conectarte al dispositivo con ssh mobile@(tu-ip-aquí). (Utilice la contraseña que creó en el paso 6).

  13. Ejecute uicache: su -c uicache mobile

  14. Vuelve a la pantalla de inicio y lanza Prompt (si no te deja conectar con localhost, reinicia el dispositivo de nuevo)

  15. Introduzca la ip como 127.0.0.1 o localhost, nombre de usuario Root o móvil según su preferencia. Yo uso Root para no tener que sudo excesivamente.

  16. Conéctate y disfruta de una experiencia de usuario de alta calidad ssh'ing a localhost

  17. Utiliza la Sincronización de Pánico para restaurar tu configuración (llaves y servidores).

-1voto

Brian Puntos 1

Si cambias el puerto 22 a 50022 (por ejemplo) me funciona bien

0 votos

Desgraciadamente, he intentado vim /etc/ssh/sshd_config , cambio Puerto a 2222 entonces launchctl unload com.openssh.sshd.plist && launchctl load com.openssh.sshd.plist pero no ha funcionado.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X