Las claves SSH en iPhone e iPad se generan en el propio dispositivo y se guardan en el almacén seguro del sistema. Solo la clave pública viaja al servidor, donde se añade a ~/.ssh/authorized_keys con ssh-copy-id o a mano. La clave privada no debe salir nunca del móvil, y el servidor espera permisos 700 en ~/.ssh y 600 en authorized_keys.

Cómo generar una clave SSH Ed25519 en el iPhone o iPad

OpenSSH admite claves Ed25519 desde la versión 6.5, publicada en enero de 2014, así que cualquier servidor razonablemente actualizado las acepta. Es el tipo recomendado para una clave nueva. Evita además depender de la firma ssh-rsa con SHA-1, desactivada por defecto desde OpenSSH 8.8 (septiembre de 2021).

En el escritorio, el par se crea con ssh-keygen. Las opciones están en el manual oficial de ssh-keygen:

ssh-keygen -t ed25519 -C "iphone-trabajo"
# Crea ~/.ssh/id_ed25519 (privada) y ~/.ssh/id_ed25519.pub (pública)

En el iPhone o el iPad no hay ssh-keygen local: la clave la genera el cliente SSH. En termi1 se crea en el propio móvil y queda en el almacén seguro del sistema. El resultado es el mismo par de siempre:

  • una clave privada que no sale del dispositivo;
  • una clave pública, que es una sola línea de texto (por ejemplo, ssh-ed25519 AAAA… comentario) y lo único que se copia al servidor.

Si usas una llave de seguridad FIDO2, OpenSSH acepta claves ed25519-sk desde la versión 8.2 (febrero de 2020). El servidor debe tener esa versión o una posterior.

Dónde se guarda la clave SSH en el iPhone frente al escritorio

En un ordenador con OpenSSH, la clave privada es un archivo en ~/.ssh/ con permisos 600. Lo protegen esos permisos y, si la pusiste, una frase de paso. En iOS la clave queda en el almacén seguro del sistema y la app la usa para autenticarse sin dejarla como archivo suelto.

Qué se comparaiPhone / iPad (termi1)Escritorio (OpenSSH)
Dónde vive la clave privadaAlmacén seguro del sistemaArchivo en ~/.ssh con permisos 600
Cómo se generaDesde la app, en el propio dispositivossh-keygen -t ed25519
Cómo llega la pública al servidorPegada en authorized_keys o emparejando con termi1 Companion en Macssh-copy-id o pegada en authorized_keys
Si la privada sale del equipoNo; tampoco va a servidores de termi1Solo si la copias tú
Qué se sincroniza entre dispositivosConexiones y atajos con cuenta opcional; la clave privada noNada; se copia la configuración a mano

La consecuencia práctica es que cada dispositivo tiene su propia clave. Dale un comentario que lo identifique (iphone-trabajo, ipad-casa). Así, si pierdes el teléfono, puedes revocar solo esa línea.

Copiar la clave pública SSH al servidor con ssh-copy-id

ssh-copy-id añade una clave pública a ~/.ssh/authorized_keys en el servidor y crea el directorio si no existe. Se ejecuta desde una máquina con OpenSSH. Sirve cuando la pública del iPhone ya está en tu portátil (por AirDrop, correo o portapapeles) y el portátil puede entrar al servidor.

# Guarda la línea pública del iPhone en iphone-trabajo.pub y súbela
ssh-copy-id -f -i iphone-trabajo.pub usuario@servidor

# Si sshd no escucha en el puerto 22
ssh-copy-id -f -i iphone-trabajo.pub -p 2222 usuario@servidor

La opción -f hace falta porque la clave privada no está en el portátil. Sin ella, ssh-copy-id intenta comprobar con la privada si la clave ya está instalada. OpenSSH escucha por defecto en el puerto TCP 22, así que -p solo es necesario si lo has cambiado.

Añadir la clave SSH a authorized_keys desde el propio iPhone

sshd espera permisos 700 en ~/.ssh y 600 en authorized_keys, y conviene fijarlos al añadir la clave a mano. Sin ordenador intermedio, entra una vez con contraseña desde el iPhone y ejecuta:

mkdir -p ~/.ssh && chmod 700 ~/.ssh
echo 'ssh-ed25519 AAAA...tu-clave... iphone-trabajo' >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

Usa >> y no >: con un solo signo sobrescribes el archivo y dejas fuera al resto de claves.

El teclado de termi1 incluye Ctrl, Tab y flechas para corregir la línea, y el SFTP integrado permite ver o bajar authorized_keys para comprobar que quedó completa. Si pides el comando a la IA, se escribe en el prompt sin pulsar Intro. La IA no recibe claves ni contraseñas.

Con un Mac el proceso es más corto. termi1 Companion (macOS 14 o posterior, gratis, en la barra de menús) comprueba el inicio de sesión remoto, mosh-server y tmux. Después empareja el iPhone con un código de seis cifras que instala la clave pública.

Cuando el acceso por clave funcione, pon PasswordAuthentication no en /etc/ssh/sshd_config. No cierres la sesión abierta hasta comprobar desde otra que entras con la clave.

4 errores al usar claves SSH desde el iPhone o iPad

Estos cuatro fallos hacen que sshd vuelva a pedir contraseña o que la sesión no llegue a abrirse:

  1. Permisos demasiado abiertos. Con StrictModes yes, el valor por defecto, sshd ignora authorized_keys si otros usuarios pueden escribir en él. Vuelve a 700 y 600.
  2. Línea partida al pegar. La clave pública ocupa una sola línea, y un salto en medio la invalida.
  3. Creer que Mosh no usa la clave. Mosh arranca mosh-server mediante una conexión SSH inicial y después necesita UDP 60000-61000. No hace port forwarding ni X11.
  4. Abrir el puerto 22 a Internet por el móvil. Para equipos sin IP pública es más limpio usar una red en malla sin abrir puertos como Prialo, o bien Tailscale.

Con la clave instalada, termi1 mantiene la sesión con Mosh al pasar de wifi a datos y usa tmux para que lo que dejes corriendo siga ahí al volver. La terminal completa funciona sin cuenta y se descarga desde la terminal termi1 en App Store.

Preguntas frecuentes

¿Se puede usar ssh-copy-id desde el iPhone?

ssh-copy-id no se ejecuta en el iPhone, porque iOS no incluye una shell local con las herramientas de OpenSSH. Desde el móvil, entra con contraseña y añade la clave pública a ~/.ssh/authorized_keys con echo y >>. También puedes ejecutar ssh-copy-id -f -i desde un ordenador que ya acceda al servidor.

¿Qué tipo de clave SSH conviene generar en el iPhone?

La clave SSH más recomendable para generar en el iPhone es Ed25519, admitida por OpenSSH desde la versión 6.5 de enero de 2014. Evita depender de la firma ssh-rsa con SHA-1, desactivada por defecto desde OpenSSH 8.8. Con una llave FIDO2, el tipo ed25519-sk requiere OpenSSH 8.2 o posterior.

¿La clave privada SSH sale del iPhone al usar termi1?

La clave privada SSH generada en termi1 no sale del iPhone: se guarda en el almacén seguro del sistema y no se envía a servidores de termi1. La cuenta opcional sincroniza conexiones y atajos, no claves privadas. La IA tampoco abre la sesión ni recibe claves o contraseñas.

¿Qué permisos necesita authorized_keys para aceptar la clave?

El archivo authorized_keys necesita permisos 600, y el directorio ~/.ssh, permisos 700, ambos propiedad del usuario. Con StrictModes activado, que es el valor por defecto de sshd, unos permisos más abiertos hacen que el servidor ignore la clave y vuelva a pedir contraseña.