Sysadmin

SSH Linux sin Password: Configura Claves en 5 Minutos

El acceso seguro y eficiente a servidores Linux es un pilar para cualquier SysAdmin, DevOps o consultor IT. La contraseña ha sido el método estándar por años, pero presenta límites graves en seguridad y eficiencia. Cada vez que tecleamos una contraseña, la exponemos a interceptaciones y ataques brute-force, ralentizando operaciones diarias. Gestionar incluso unos pocos servidores con credenciales repetitivas es frustrante. SSH (Secure Shell) ofrece una alternativa superior: autenticación de clave pública. Este método bloquea ataques brute-force antes de que comprometan 2.000 endpoints, y optimiza el flujo de trabajo para automatización con Ansible. En esta guía, te explico paso a paso cómo configurar SSH Linux sin password, desde la generación de claves hasta la gestión avanzada, incluyendo los errores que he visto al migrar 300 VMs a Proxmox para una organización sanitaria pública.

Requisitos Previos / Entorno de Prueba

Para seguir esta guía, necesitas dos servidores Linux (o una workstation Linux y un servidor remoto) con acceso SSH habilitado y un user con sudo. La distribución de referencia es Ubuntu 22.04, pero los conceptos aplican a cualquier distribución. Asegúrate de usar un usuario non-root. La SSH Linux sin password es nuestro objetivo, y veremos cómo implementarlo en un entorno real.

Funcionamiento de la Autenticación de Clave Pública

La autenticación de clave pública se basa en un par de claves criptográficas: clave privada y clave pública. La privada se genera en el cliente, debe permanecer secreta, protegida por permisos restrictivos y una passphrase. La pública se copia al servidor remoto.

Al conectar, el cliente envía un signal al servidor indicando que quiere autenticarse con una clave. El servidor cifra un mensaje usando la clave pública asociada a tu cuenta y lo envía al cliente. Solo tu clave privada correspondiente puede descifrar este mensaje. Si el cliente descifra el mensaje y envía la respuesta correcta, el servidor concede acceso. Esto elimina la transmisión de contraseñas en claro, reduciendo el riesgo de interceptación y ataques de fuerza bruta.

Generar Par de Claves con ssh-keygen

Primer paso: generar el par de claves SSH en el cliente. Usaremos el algoritmo Ed25519, más moderno y seguro que RSA, con mejor rendimiento y claves más pequeñas.

Abre la terminal en tu cliente y ejecuta:

ssh-keygen -t ed25519 -C "nombreusuario@hostname_cliente"

Te pedirá dónde guardar la clave (el default ~/.ssh/id_ed25519 es ideal) y si quieres una passphrase. Recomiendo poner una passphrase robusta. Aunque el objetivo es SSH Linux sin password en el servidor, la passphrase protege tu clave privada en el cliente. Si alguien accede a tu workstation, no podrá usar la clave sin la passphrase.

Este comando crea dos archivos en ~/.ssh/:

  • id_ed25519: tu clave privada.
  • id_ed25519.pub: tu clave pública.

Copiar Clave Pública al Servidor Remoto

Una vez generado el par, copia la clave pública al servidor remoto. La herramienta más simple y segura es ssh-copy-id.

ssh-copy-id usuario_remoto@ip_servidor_remoto

Pedirá la contraseña del usuario remoto solo esta vez. ssh-copy-id crea ~/.ssh/ en el servidor remoto si no existe, ajusta los permisos y añade tu clave pública al archivo ~/.ssh/authorized_keys. Es el método preferido porque automatiza configuraciones y reduce errores.

Método Manual con authorized_keys

Si ssh-copy-id no está disponible, copia la clave manualmente. Requiere más atención a los permisos.

Para copiar la clave pública al servidor remoto y añadirla a authorized_keys, usa este comando:

cat ~/.ssh/id_ed25519.pub | ssh usuario_remoto@ip_servidor_remoto "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

Este comando ejecuta varias acciones en el servidor remoto:

  1. mkdir -p ~/.ssh: crea la directory .ssh si no existe.
  2. chmod 700 ~/.ssh: ajusta permisos para .ssh (lectura, escritura y ejecución solo para el propietario).
  3. cat >> ~/.ssh/authorized_keys: añade tu clave pública al archivo authorized_keys.
  4. chmod 600 ~/.ssh/authorized_keys: ajusta permisos para authorized_keys (lectura y escritura solo para el propietario).

Permisos incorrectos hacen que SSH ignore la clave por seguridad, bloqueando el acceso SSH Linux sin password.

Verificar Conexión SSH

Tras copiar la clave, prueba la conexión al servidor remoto:

ssh usuario_remoto@ip_servidor_remoto

Accederás sin que te pidan la contraseña (solo la passphrase de la clave privada si la configuraste). Si te piden la contraseña del usuario remoto, hay un problema de configuración, probablemente los permisos.

Configurar ~/.ssh/config para Alias

Para simplificar el acceso, configura el archivo ~/.ssh/config en tu cliente. Permite definir alias para tus servidores, especificando user, host, port y la clave privada. Esto es útil cuando gestionas múltiples servidores, como en infraestructuras de 2.000 endpoints que he administrado para una PA.

Crea o modifica ~/.ssh/config (touch ~/.ssh/config && chmod 600 ~/.ssh/config):

Host servidor_web
  Hostname 192.168.1.100
  User usuario_web
  IdentityFile ~/.ssh/id_ed25519

Host db_prod
  Hostname 10.0.0.5
  User usuario_db
  Port 2222
  IdentityFile ~/.ssh/clave_db_privada

Ahora puedes conectar con ssh servidor_web o ssh db_prod.

Permisos Correctos en .ssh

SSH es estricto con los permisos. Si ~/.ssh/ o authorized_keys tienen permisos demasiado abiertos, SSH ignora las claves por seguridad y pide la contraseña.

Asegúrate de tener estos permisos. En el cliente (clave privada):

chmod 600 ~/.ssh/id_ed25519

En el servidor remoto (directory y archivo authorized_keys):

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Estos comandos garantizan que solo el propietario pueda leer y escribir. Lee también: SSH Hardening Linux: Complete Guide 2026 (10 Critical Settings) para profundizar en seguridad SSH.

Usar ssh-agent para Evitar Passphrase Repetida

Si protegiste tu clave privada con una passphrase, ssh-agent la desbloquea una sola vez por sesión. ssh-agent gestiona tus claves privadas y las desbloquea cuando es necesario.

Para iniciar ssh-agent y añadir tu clave:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

Introduce la passphrase. ssh-agent la mantendrá en memoria durante tu sesión, permitiendo SSH Linux sin password totalmente automático.

Conexión a Múltiples Servidores con Una Clave

Un gran beneficio de la autenticación de clave pública es usar la misma clave privada para acceder a varios servidores. Simplifica la gestión en ambientes donde un usuario necesita acceso a decenas o centenares de VMs. Copia la misma clave pública a todos los servidores usando ssh-copy-id o el método manual.

Errores Comunes y Resolución de Problemas

Cuando la autenticación de clave pública falla, el debug es fundamental. La opción -vvv de ssh es tu mejor herramienta, mostrando el proceso exacto de conexión.

ssh -vvv usuario_remoto@ip_servidor_remoto

Busca en el output:

  • Authentication methods that can continue: publickey,password: Métodos de autenticación que el servidor acepta.
  • Trying private key: /home/usuario/.ssh/id_ed25519: SSH intenta usar tu clave privada.
  • Authentication failed: publickey: La autenticación falló. Causas comunes:
  • Permisos erróneos: Revisa ~/.ssh/ y authorized_keys en el servidor, y la clave privada en el cliente.
  • Clave pública no presente: Verifica que tu clave esté en authorized_keys en el servidor.
  • Usuario incorrecto: El user del comando ssh debe coincidir con el del servidor.
  • Servidor SSH no configurado para claves: Revisa /etc/ssh/sshd_config para PubkeyAuthentication yes y AuthorizedKeysFile .ssh/authorized_keys.

Para más detalles sobre sshd_config, consulta la documentación oficial: OpenSSH sshd_config.

Conclusiones con Puntos Clave Operativos

Configurar SSH Linux sin password con autenticación de clave pública es un paso crítico para la seguridad y eficiencia IT. No es «si» implementarlo, es «cuando». Elimina vulnerabilidades de contraseñas, acelera accesos y prepara tu infraestructura para automatización con Ansible. Protege tu clave privada con passphrase y mantén los permisos .ssh estrictos. Estas prácticas garantizan un ambiente seguro y productivo, reduciendo riesgos de incidentes y optimizando tu tiempo.

Comparte este artículo:

Escrito por

Rosario Giordano

Rosario Giordano es administrador de sistemas y consultor de TI especializado en c iberseguridad y cloud, con más de 20 años de experiencia en la gestión de infraestructuras Linux empresariales. Sus áreas de especialización incluyen el hardening de SSH, plataformas Kubernetes , bases de datos PostgreSQL, virtualización con VMware/Proxmox y el cumplimiento de los marcos de seguridad NIS2 e ISO 27001.