No se puede usar ssh root@localhost en iPad con jailbreak con iOS 8.1

Hice jailbreak (no para piratas) en mi iPad 4 (iOS 8.1) hace varias semanas y descubrí que no podía hacer ssh root@127.0.0.1 a través de los mensajes 1 o 2 en el iPad. Incluso yo no puedo conectarme a través de la IP de LAN (por ejemplo, 192.186.XX). Sin embargo, no hay problema si hago ssh root@LAN IP en mi iPhone o Mac en la misma LAN.

Por cierto, pude hacer ssh root@localhost en un iPad con jailbreak cuando ejecutaba iOS 6.1. También está bien si ya he iniciado sesión ssh en iPad en mi Mac y ssh root@127.0.0.1 nuevamente.

La salida de netstat en 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ás el modelo de caja de arena/contenedores ha cambiado desde iOS 8?)

Respuestas (3)

Una alternativa mucho mejor que ejecutar Prompt como root es crear otra sshdinstancia que escuche un puerto por encima de 1024.

En este ejemplo he usado el puerto 10022.

  • Copiar /Library/LaunchDaemons/com.openssh.sshd.plista/Library/LaunchDaemons/com.openssh.sshd2.plist
  • Cambie el Labely el SockServiceNamein com.openssh.sshd2.plistagregando 2 a ssh/ sshd:

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

ssh2 10022/udp # Protocolo de inicio de sesión remoto SSH
ssh2 10022/tcp # Protocolo de inicio de sesión remoto SSH

Diferencias para las versiones de iOS:

iOS 12.1.2/unc0ver, iOS 13.3.1/checkra1n:

  • de esta opción de respuesta #2.
  • copie el plist como se indica arriba, pero cambie la SockServiceNameentrada com.openssh.sshd2.plistde ssha simplemente el nuevo número de puerto 10022. La sección se verá así:
<key>Sockets</key>
<dict>
   <key>Listeners</key>
   <dict>
      <key>SockServiceName</key>
      <string>10022</string>
   </dict>
</dict>

iOS 12.4 / quimera.sh

  • no copiar el archivo plist
  • en su lugar, edite /etc/ssh/sshd_configcomo raíz. Detalles de este artículo
  • eliminar el comentario delante dePort 22
  • agregue otra línea debajo paraPort 10022

Todas las versiones de iOS:

  • Reinicie el dispositivo (o launchctl load com.openssh.sshd2.plistsi no desea reiniciar)
  • Conéctese a través del puerto 10022 en lugar de 22

Si ha instalado bash, coreutilsy sedpuede 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
¡Esto funciona con Coda 2 en el iPad! Mi solución a continuación no funciona porque a Coda 2 no le gusta que se inicie como una aplicación raíz.
Advertencia: Intenté esto en iOS 9.3.3 con Pangu semi-jb y rompió el jailbreak. No pude ingresar al modo jailbreak y tuve que restaurar mi dispositivo :\

La razón es que iOS 7 y 8 ponen a prueba las aplicaciones de la App Store. La solución más sencilla se encuentra a continuación (adaptado de http://blog.funroll.co/ios-7-jailbreak-enable-ssh-to-localhost )

  1. Instalar OpenSSH a través de Cydia
  2. Conéctese a la misma red wifi que su Mac
  3. Tome su dirección IP desde Configuración -> Wifi -> (i) icono
  4. Abre Terminal en tu mac y ssh root@
  5. La contraseña predeterminada es alpine. Use passwd para cambiar si aún no lo ha hecho
  6. establezca una contraseña de inicio de sesión para el nombre de usuario móvil si aún no lo ha hecho

    contraseña móvil

  7. ir al directorio de aplicaciones

    cd /var/móvil/Contenedores/Paquete/Aplicación/ <-- iOS 8

    cd /var/móvil/Aplicaciones <-- iOS 7

  8. ¡Encuentra rápido!

    ls ./*/*/Aviso*

    Esto te dará algo como

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

  9. ¡muévase rápido!

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

    (Use 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 ícono de Prompt
  11. Reinicie manteniendo presionado home y dormir / despertar hasta que vea el ícono de Apple
  12. ssh de nuevo en el dispositivo usando ssh mobile@(your-ip-here). (Utilice la contraseña que creó en el paso 6).
  13. Ejecutar uicache: su -c uicache móvil
  14. Regrese a la pantalla de inicio e inicie Prompt (si no le permite conectarse a localhost, reinicie el dispositivo nuevamente)
  15. Ingrese la ip como 127.0.0.1 o localhost, raíz de usuario o móvil según su preferencia. Uso root para no tener que sudo en exceso.
  16. Conéctese y disfrute de una experiencia de usuario de alta calidad ssh'ing a localhost
  17. ¡Use Panic Sync para restaurar su configuración (claves y servidores)!

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

Desafortunadamente, intenté vim /etc/ssh/sshd_configcambiar el puerto a 2222 launchctl unload com.openssh.sshd.plist && launchctl load com.openssh.sshd.plist, pero no funcionó.