Autenticación
DR-Terminal admite tres métodos de autenticación: contraseña, clave privada y llave de seguridad FIDO2 (YubiKey).
Contraseña
La vía más sencilla. Una contraseña introducida en una conexión guardada acaba en el almacén seguro de la plataforma, nunca en la configuración JSON. Si el campo de contraseña está vacío, la app la pide cada vez que conectas.
Recurso a contraseña tras clave pública: cuando el servidor rechaza una clave pública (p. ej. no está en authorized_keys), DR-Terminal pide automáticamente la contraseña del mismo usuario en lugar de abandonar la conexión.
Clave privada
Se aceptan claves en formato OpenSSH, PKCS#1, PKCS#8, ssh.com o PuTTY PPK (v2/v3): el formato se detecta automáticamente, así que una clave .ppk funciona sin convertirla antes. Puedes:
- Pegar la clave directamente en el formulario de conexión.
- Usar el gestor de claves (Ajustes → Seguridad → Claves SSH) y seleccionar una clave guardada. Los archivos de clave importados aquí pueden ser además DER binario en bruto.
Si la clave está cifrada con una frase de contraseña, DR-Terminal la pide la primera vez que se usa la clave y después la conserva solo en memoria — como ssh-agent, un desbloqueo por ejecución de la app; al cerrar la app todas las claves vuelven a quedar bloqueadas. Las claves cifradas importadas permanecen en su forma cifrada original en el almacén seguro. Admitimos muchos algoritmos: RSA, ECDSA (P-256, P-384, P-521), Ed25519, Ed25519-SK, ECDSA-SK (FIDO).
Generador de claves
Ajustes → Seguridad incluye un asistente Generar clave SSH. Elige el tipo (p. ej. ed25519), define una frase de contraseña (opcional: protege la clave incluso dentro del almacén seguro) y la clave se guarda localmente. El comentario de clave por defecto es ${user}@${host}@DR-Terminal, práctico para identificar la clave en el servidor. La clave pública se puede copiar al portapapeles para ~/.ssh/authorized_keys en el servidor.
Las claves de la lista se pueden renombrar en el momento; si el nombre que eliges coincide con uno existente, la app añade (2) automáticamente.
Conversor de claves
Ajustes → Seguridad → Claves SSH → Convertir vuelve a serializar una clave privada entre todos los formatos habituales: elige un origen (una clave guardada, un archivo o texto pegado) y un formato de destino, y luego copia, comparte o guarda el resultado.
Formatos, en ambos sentidos:
| Formato | Lectura | Escritura |
|---|---|---|
OpenSSH (BEGIN OPENSSH PRIVATE KEY) | ✓ | ✓ |
PKCS#8 (BEGIN PRIVATE KEY) | ✓ | ✓ |
PKCS#1 (BEGIN RSA PRIVATE KEY, solo RSA) | ✓ | ✓ |
| PuTTY PPK — v2 y v3 | ✓ | ✓ |
La entrada puede ser PEM (texto), PuTTY PPK o DER binario en bruto: el formato se detecta automáticamente. Tipos de clave: RSA, Ed25519 y ECDSA (P-256/384/521).
- La exportación a PuTTY PPK ahora funciona en ambos sentidos (antes la app solo podía leer
.ppk). Elige v3 (Argon2id KDF + HMAC-SHA-256, PuTTY moderno) o v2 (PuTTY antiguo) con el selector de versión. Los archivos producidos así se cargan en PuTTY/puttygensin cambios. - Frase de contraseña de exportación opcional. Déjala en blanco para una clave sin cifrar; defínela y la salida se cifra con una KDF fuerte por formato (bcrypt / PBKDF2 / Argon2id). Consulta Seguridad y datos → Claves exportadas.
- Si la conversión falla (frase de contraseña de origen incorrecta, formato incompatible), la app ahora muestra el motivo real en lugar de un error genérico.
PKCS#1 solo describe claves RSA, por lo que ese destino solo se ofrece cuando el origen es una clave RSA.
Cambiar una conexión con contraseña a clave
No hace falta editar authorized_keys a mano. Para una conexión guardada con contraseña, DR-Terminal ofrece una migración guiada en dos sitios:
- Lista de conexiones — el icono de llave en la tarjeta de una conexión con contraseña inicia el asistente de migración.
- Dentro de una sesión — el menú del terminal de una sesión con contraseña conectada tiene Cambiar a clave SSH.
Ambos ejecutan el mismo flujo: eliges una clave guardada o generas una nueva, DR-Terminal despliega la clave pública en el servidor a través del inicio de sesión con contraseña existente, comprueba que la autenticación por clave funciona de verdad y solo entonces cambia la conexión guardada a autenticación por clave. Si la prueba falla, la conexión queda sin cambios.
Llave de seguridad (FIDO2 / YubiKey)
DR-Terminal maneja claves ed25519-sk y ecdsa-sk, y puedes generarlas desde dentro de la app. No hace falta ssh-keygen externo.
Generar una clave respaldada por YubiKey en DR-Terminal
- Ajustes → Seguridad → Claves SSH → Generar clave SSH.
- Activa el interruptor de Llave de seguridad. Elige el algoritmo: Ed25519-SK (recomendado) o ECDSA-SK.
- Toca tu YubiKey cuando se te pida. La app pide al token que cree una nueva credencial y firma la clave pública.
- La clave se guarda en el gestor de claves de DR-Terminal. Copia la clave pública y pégala en
~/.ssh/authorized_keysen el servidor de destino.
Windows Hello: en Windows la solicitud del PIN de FIDO2 es el diálogo nativo de Windows Hello (PIN / huella / rostro), no un diálogo dentro de la app.
Las claves residentes (almacenadas en la propia YubiKey) eliminan la necesidad de llevar el archivo de clave: todo el secreto vive en el token. Las claves generadas en DR-Terminal son no residentes: el identificador de la credencial se guarda en el gestor de claves y se necesita junto con el token.
Usar una clave SK existente
Si ya tienes una id_ed25519_sk / id_ecdsa_sk generada en otro sitio (p. ej. con ssh-keygen -t ed25519-sk), impórtala desde el mismo gestor de claves: DR-Terminal trata las claves SK importadas y generadas de la misma manera.
Al conectar
DR-Terminal solicita un toque en tu llave. El indicador parpadea: tócala. iOS admite NFC y USB-C (YubiKey 5Ci y posteriores). Android: NFC + USB (OTG). El escritorio usa las APIs nativas de FIDO2 (Windows Hello, macOS, Linux mediante libfido2).