Solución de problemas

Esta página cubre los problemas comunes de Mobile SSH y las primeras comprobaciones que conviene hacer antes de cambiar la configuración de SSH en el servidor.

No se puede conectar

Comprueba:

Si el mismo host funciona desde otro dispositivo, compara exactamente host, puerto, nombre de usuario, clave y ruta de red.

La identidad del servidor requiere atención

Ambas plataformas comprueban la identidad SSH antes de enviar credenciales. En iOS una clave nueva requiere confirmar su huella y Confiar y reconectar. En Android, Ajustes → General → Seguridad → Aceptar automáticamente nuevas identidades SSH está activado por defecto: guarda la primera clave sin certificado y exige que las siguientes coincidan. Desactívalo para revisar huellas nuevas antes de conectar.

Compara la huella SHA-256 de una clave nueva o cambiada con tu administrador por un canal fiable. Un cambio puede indicar sustitución del servidor o un servidor inesperado; no elimines la identidad anterior sin verificarlo. Revisa las identidades en Ajustes. Ni las direcciones alternativas ni los bastiones evitan la comprobación.

Android también admite autoridades de certificados de host con ámbitos definidos y revocaciones. Las autoridades desconocidas, los certificados caducados o inválidos y las claves revocadas siguen bloqueados incluso con la aceptación automática inicial activada. En iOS, Ajustes → Identidades de servidores → Importar claves revocadas acepta entradas OpenSSH @revoked Ed25519/ECDSA con ámbitos definidos. Si el texto pegado mezcla entradas no compatibles, se rechaza por completo; no se admiten entradas de CA, certificados, claves RSA ni nombres de host con hash. Las revocaciones anulan la confianza anterior en conexiones nuevas y reconexiones, pero no cierran las existentes. Las identidades y revocaciones se excluyen de las copias de seguridad. En iOS, verifica un servidor desconocido en la app principal antes de subir archivos mediante la extensión para compartir.

No se puede conectar mediante un bastión

Revisa direcciones y credenciales de cada bastión y que el teléfono alcance el primero. Cada host posterior debe ser accesible desde el anterior. Los bastiones deben permitir reenvío TCP, respetando permitopen. La ruta debe usar SSH, no tener ciclos y expandirse a ocho saltos como máximo.

Un bastión eliminado o sin resolver no produce una conexión directa. Corrige la ruta y reconecta. En Android, el estado y el registro de inicio de sesión distinguen el salto fallido del servidor final.

Error de autenticación

Comprueba:

Para claves privadas cifradas, introduce la frase de contraseña en el campo de contraseña/frase.

En Android, ssh o git remoto necesita Reenviar agente SSH activado para ese servidor y permitido en el servidor. Solo se ofrecen claves guardadas utilizables. Una solicitud de Permitir/Denegar o de clave física puede pausar terminal, transferencias y túneles hasta 30 segundos; respóndela en la app o desde la notificación.

Falló la importación de la clave privada

La importación de la clave privada usa el selector de archivos del sistema. Si la importación falla:

La clave de seguridad no responde en Android

Android admite credenciales CTAP2/FIDO2 ed25519-sk y ecdsa-sk por USB o NFC. Usa la misma clave física que creó el archivo importado. USB necesita modo host y permiso; activa NFC y mantén la clave contra el teléfono hasta terminar. Introduce el PIN cuando se solicite y toca la clave.

El servidor necesita OpenSSH 8.2 o posterior con el algoritmo sk-* elegido permitido. No se admiten claves solo U2F ni detección de credenciales residentes. El plazo de inicio puede agotarse mientras buscas la clave: tenla preparada. Para solicitudes en segundo plano, abre la notificación o vuelve a la app. iOS no admite autenticación con claves de seguridad físicas.

La entrada del teclado se retrasa o cambia

Android envía directamente la entrada con autocorrección y predicciones desactivadas. En iOS, Dictado y sugerencias viene activado y admite voz y correcciones de la línea actual. Si altera inesperadamente el shell, desactívalo, revisa Sugerencias del teclado y abre un panel nuevo.

Usa la fila adicional para ESC, TAB, CTRL, flechas, HOME, END, PGUP y PGDN. Una red bloqueada también retrasa la entrada. La cabecera de Android muestra sin respuesta o no enviado; lo escrito al reconectar se descarta y no se reproduce en un shell nuevo. Espera la conexión, revisa el prompt y repite solo lo necesario.

El desplazamiento de tmux no es el que esperas

Mobile SSH cambia el comportamiento del desplazamiento según el estado de la terminal. En tmux u otros programas de pantalla alternativa, los gestos de desplazamiento pueden enviar comandos del modo de copia de tmux en lugar de desplazar el historial local. Si el modo de ratón de tmux está activado, la app envía secuencias de escape de rueda del ratón.

Si el desplazamiento no funciona bien:

En Android, llegar al final abandona automáticamente el modo copia tmux controlado por la app si se ve su indicador estándar. Diseños personalizados o divididos sin indicador pueden necesitar salida manual. Al cambiar de sesión, comprueba servidor, socket tmux y nombre de sesión en el gestor.

La sesión se cae tras el bloqueo de pantalla

En Android, Mobile SSH usa keepalives, un servicio en primer plano, wake lock, Wi-Fi lock e intentos de reconexión para reducir las desconexiones. Las políticas de batería de Android aún pueden detener el trabajo en segundo plano.

Comprueba:

iOS suspende las apps en segundo plano, por lo que SSH no se mantiene indefinidamente al cambiar de app o bloquear. Hay una breve tolerancia para cambios rápidos. Elige tmux, Herdr o Zellij en Adjuntar al conectar, o usa Eternal Terminal, para retomar trabajo después de reconectar. El multiplexor debe seguir en ejecución en el servidor; Eternal Terminal no admite rutas con bastiones.

La transferencia de archivos no explora los archivos del teléfono

Mobile SSH no pide ningún permiso de almacenamiento en Android. En su lugar, el panel local muestra una única carpeta que tú concedes con el selector de carpetas del sistema — si está vacío, usa Pick folder para elegir una. La concesión se mantiene, así que es un paso que se hace una sola vez.

Si los archivos remotos cargan pero los locales no, la conexión SSH está bien y simplemente todavía no has concedido ninguna carpeta.

En iOS, el panel local empieza en Documentos de la app. Mi teléfono → Elegir carpeta local permite recordar otra carpeta de Archivos. Si falta el proveedor o permiso, elígela de nuevo o cambia a la carpeta de la app. Sus descargas aparecen en En mi iPhone; las externas conservan la ubicación del proveedor. Los permisos de carpeta no se transfieren con las copias.

Falló la subida o la descarga

Comprueba:

Falló el reenvío de puertos

Comprueba:

La VPN o el proxy no transporta tráfico en Android

SSH VPN, Shadowsocks y OpenVPN pueden mantener bloqueado el tráfico capturado al reconectar, en vez de enviarlo directamente. Detenerlos termina esa protección. Una VPN no elimina restricciones de internet impuestas al servidor por su proveedor o administrador.

La copia de seguridad no restauró todo

Revisa la vista previa y Combinar o Reemplazar. Las secciones ausentes en copias antiguas o parciales no cambian esas áreas. Las completas incluyen preferencias compatibles; Android incluye también VPN y proxies. No todo lo específico de una plataforma es portable a iOS, y versiones antiguas pueden rechazar formatos completos nuevos.

Identidades, permisos del sistema y acceso a carpetas permanecen en el dispositivo. Verifica hosts y concede permisos de carpeta/VPN en el nuevo. Las credenciales físicas necesitan la clave correspondiente. Importar perfiles no inicia VPN: revísalos antes.

El escritorio remoto no funciona o no cambia de tamaño

Abre el visor desde una sesión SSH conectada y comprueba que el servidor permite reenvío TCP local. En Linux, sigue el mensaje de paquetes ausentes para instalar escritorio/VNC. Android no duplica consolas Wayland; usa un escritorio virtual compatible.

En macOS, activa Compartir pantalla en los ajustes del Mac. Android admite autenticación con una cuenta del Mac; iOS requiere activar el acceso clásico con contraseña VNC en Compartir pantalla y usar esa contraseña, en lugar de la contraseña de una cuenta del Mac. El visor muestra la pantalla existente del Mac. Puede ser necesario cambiar su resolución en el Mac. Un escritorio virtual solo se redimensiona en vivo si su servidor lo admite; reiniciar uno creado por la app requiere confirmación y cierra sus programas. Salir del visor mantiene el escritorio remoto en ejecución.

Registros de depuración

Las dos plataformas registran cosas distintas, así que elige la que corresponda a tu problema.

Android — terminal y representación. Activa Settings → Debugging → Show Debug and Logs buttons y luego usa el botón Debug que aparece en la pantalla de inicio. Registra eventos de la terminal, tamaños de datos SSH, entrada táctil, comportamiento de redimensionado y ciclo de vida de los túneles. Al iniciar una grabación se te advierte primero de que captura todas las teclas que pulses, contraseñas incluidas. Al detenerla se guarda un archivo comprimido en tu carpeta de Descargas.

iOS — conexiones y reconexiones. Activa Settings → Diagnostics → Record debug log. Registra cada dirección marcada y por qué falló, los intentos de reconexión y su retroceso, las conexiones caídas, «peer stopped answering keepalives», los cambios de red y los comandos de tmux con sus errores. Settings muestra un recuento de líneas en vivo para que puedas confirmar que está grabando, y Export Debug Log lo comparte como archivo de texto. Se mantiene en memoria y cubre únicamente la sesión actual de la app.

Revisa cualquier registro o archivo de depuración antes de compartirlo. Están pensados para la solución de problemas y pueden revelar nombres de servidores, direcciones, tiempos u otros detalles del entorno — y en Android, todo lo que hayas escrito.