>_ DevTrendses

Idioma

Inicio

Lenguajes

Secciones

Frontend Backend Móvil DevOps AI / ML GameDev Blockchain Embebidos Seguridad
C

Qué usar en lugar de OpenSSH en dispositivos de bajo consumo y routers

Cuando estás construyendo una imagen minimalista para un microcontrolador, router o contenedor Docker, cada megabyte de memoria se convierte en un lujo. OpenSSH con todas sus funciones funciona muy bien en servidores, pero para sistemas embebidos parece un camión llegando a una tienda de esquina. Arrastra consigo una serie de dependencias, y la RAM literalmente se derrite ante tus ojos.

En situaciones como estas, la gente recurre a Dropbear. Es un servidor y cliente SSH compacto escrito por Matt Johnston. El proyecto apareció hace más de veinte años, pero sigue siendo mantenido activamente y sirve como estándar predeterminado en OpenWrt y el firmware de dispositivos de red.

Qué hay dentro y cómo se logra el ahorro

Dropbear resuelve una tarea específica: economizar espacio en disco y RAM mientras mantiene la seguridad básica del protocolo SSH-2. Si compilas el proyecto con las flags correctas, el binario resultante ocupa apenas un par de cientos de kilobytes.

El desarrollador aplicó el concepto de un binario multi-propósito único, similar a cómo funciona la utilidad BusyBox. En este modo, un archivo maneja las funciones de servidor, cliente dbclient, generador de claves dropbearkey y convertidor dropbearconvert. Creas enlaces simbólicos con los nombres requeridos apuntando a un binario, y el programa determina su modo de operación basándose en el nombre del archivo llamado.

Aquí hay un par de trucos más para reducir el tamaño:

  • El cliente integrado scp se compila sin barra de progreso de transferencia de archivos por defecto. Si necesitas un indicador, tendrás que pasar explícitamente el parámetro SCPPROGRESS=1 durante la compilación.
  • En el archivo options.h, puedes desactivar manualmente algoritmos de cifrado sin usar, reenvío de puertos o soporte de autenticación por contraseña, reduciendo aún más el tamaño final del archivo.

Matices en el manejo de claves

Si estás acostumbrado a las herramientas estándar de OpenSSH, el proyecto te sorprenderá de varias maneras. Del lado del servidor, todo es familiar: el archivo ~/.ssh/authorized_keys funciona de la manera estándar. Añades claves públicas en formato ssh-rsa o ssh-ed25519 allí. Lo principal es asegurarte de que tu editor no divida la cadena de la clave en múltiples líneas, y que los permisos en el directorio .ssh permitan escritura solo para el propietario.

Del lado del cliente y al generar claves de host, comienzan las peculiaridades. La utilidad usa su propio formato para claves privadas. Para usar tu familiar clave ~/.ssh/id_rsa en el cliente dbclient, primero necesitarás convertirla:

dropbearconvert openssh dropbear ~/.ssh/id_rsa ~/.ssh/id_rsa.db
dbclient -i ~/.ssh/id_rsa.db user@remotehost

Si creas una nueva clave a través de la utilidad nativa dropbearkey, las partes privada y pública se输出的 directamente a la consola. Puedes extraer la clave pública para añadirla a otro servidor con un filtrado simple:

./dropbearkey -y -f ~/.ssh/id_ed25519 | grep "^ssh-" > ~/.ssh/id_ed25519.pub

Iniciar el servidor y escollos

Por lo general, antes de iniciar el servidor SSH, necesitas generar manualmente las claves de host:

./dropbearkey -t rsa -f dropbear_rsa_host_key
./dropbearkey -t ed25519 -f dropbear_ed25519_host_key

Dropbear tiene un truco conveniente para un arranque rápido del sistema. En lugar de generar claves al inicio (lo que ralentiza el arranque en procesadores débiles), pasas la flag -R al servidor. En este caso, las claves se crearán automáticamente en el directorio /etc/dropbear/ solo en la primera conexión entrante.

Al operar, ten en cuenta las peculiaridades del proyecto:

  • Ejecutar el servidor como usuario regular está muy restringido. No podrás asignar un pseudo-terminal (pty), cambiar a otra cuenta o usar contraseñas shadow.
  • Las claves de host cifradas con contraseña no son compatibles directamente, aunque el cliente puede conectarse a un ssh-agent en ejecución.
  • El proyecto carece de documentación detallada. Las instrucciones principales están dispersas en los archivos de texto INSTALL.md, MULTI.md y SMALL.md en la raíz del repositorio.

A quién le será útil esta herramienta

Dropbear será útil si estás creando firmware personalizado para routers, desarrollando un dispositivo basado en Linux con memoria flash limitada, o construyendo una imagen initramfs compacta. En un servidor completo con decenas de gigabytes de memoria, apenas notarás diferencia con OpenSSH. Pero donde cada kilobyte cuenta, esta herramienta conserva recursos mejor que la mayoría de las alternativas.

Proyectos relacionados