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?)
Una alternativa mucho mejor que ejecutar Prompt como root es crear otra sshd
instancia que escuche un puerto por encima de 1024.
En este ejemplo he usado el puerto 10022.
/Library/LaunchDaemons/com.openssh.sshd.plist
a/Library/LaunchDaemons/com.openssh.sshd2.plist
Cambie el Label
y el SockServiceName
in com.openssh.sshd2.plist
agregando 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:
SockServiceName
entrada com.openssh.sshd2.plist
de ssh
a 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
/etc/ssh/sshd_config
como raíz. Detalles de este artículoPort 22
Port 10022
Todas las versiones de iOS:
launchctl load com.openssh.sshd2.plist
si no desea reiniciar)Si ha instalado bash
, coreutils
y sed
puede 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
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 )
contraseña móvil
ir al directorio de aplicaciones
cd /var/móvil/Contenedores/Paquete/Aplicación/ <-- iOS 8
cd /var/móvil/Aplicaciones <-- iOS 7
¡Encuentra rápido!
ls ./*/*/Aviso*
Esto te dará algo como
./3EE7B167-AF7B-497B-9C8E-EAC96F4AF0D9/Indicador 2.app/Indicador 2
¡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
.
si cambias el puerto 22 a 50022 (por ejemplo) me funciona bien
vim /etc/ssh/sshd_config
cambiar el puerto a 2222 launchctl unload com.openssh.sshd.plist && launchctl load com.openssh.sshd.plist
, pero no funcionó.
colin
c0deo