SSH, o Secure Shell, es un protocolo de red de código abierto que puedes usar para acceder a servidores y ejecutar comandos remotamente, ideal para usuarios de VPS.
Hay dos maneras de habilitar SSH:
- Acceso basado en contraseña
- Autenticación basada en clave pública
La autenticación basada en clave pública también se conoce como acceso SSH sin contraseña.

Ventajas del acceso SSH sin contraseña
El acceso a la conexión de los usuarios protegidos por contraseña a menudo resulta incómodo. Las contraseñas difíciles de recordar, además, si trabajas en un entorno donde tienes que introducir la contraseña muchas veces, pierdes mucho tiempo.
Aquí hay algunas ventajas del acceso SSH sin contraseña:
- Simple y sin inicio de sesión interactivo. No necesitas introducir la contraseña para cada sesión nueva.
- Más seguro que las contraseñas, protección criptográfica (clave de cifrado pública/privada).
- Más confiable, evita bloqueos por intentos fallidos de contraseña.
- Mejor gestión de la autenticación y autorización.
- Ideal para automatización en infraestructuras pequeñas y grandes.
- Fácil de configurar y mantener.
Para empezar a usar SSH sin contraseña, necesitas generar un par de claves SSH. En este manual nos centraremos en SSH versión 2, la última y más segura del protocolo.
Conéctate a tu servidor VPS vía SSH ¡y empecemos!
Primero, debemos comprobar si existe una clave SSH para el equipo cliente. Esto evita sobrescribir la configuración actual. Para comprobarlo, usa este comando:
ls -al ~/.ssh/id_*.pub
Si la clave ya existe, puedes a) omitir el siguiente paso de generación de claves SSH; b) eliminar la configuración actual; c) crear una copia de seguridad de la clave existente. Si no existe la clave, verás lo siguiente:
ls: cannot access /users/appsadm/.ssh/id_*.pub: No such file or directory
Asegúrate de que el directorio ~/.ssh tenga permisos estrictos:
chmod 700 ~/.ssh
Ahora podemos proceder a generar la clave SSH.
Acceso SSH mediante clave en Ubuntu y CentOS
Para generar una clave SSH pública y privada, recomendamos usar el algoritmo ed25519, que es más seguro y eficiente (que rsa). Usa el comando:
ssh-keygen -t ed25519
Si tu sistema no soporta ed25519, puedes usar RSA con SHA-2:
ssh-keygen -t rsa-sha2-512 -b 4096
La longitud predeterminada para RSA es de 3072 bits, pero 4096 bits ofrece mayor seguridad. Este es un proceso interactivo de generación de claves, y se te pedirá que realices algunas acciones, como:
- Introducir el archivo donde guardar la clave (
/home/.ssh/id_ed25519
o/home/.ssh/id_rsa
). - Introducir una frase de contraseña (dejar en blanco para no usar frase de contraseña).
Si quieres usar los valores predeterminados, simplemente pulsa Intro en cada solicitud. La frase de contraseña se usa para cifrar la clave privada; sin embargo, no es obligatoria y puede omitirse, aunque esto reduce la seguridad si la clave privada es comprometida. La clave privada se guarda en la carpeta predeterminada .ssh/id_ed25519
o .ssh/id_rsa
.
La clave pública se guarda en el archivo .ssh/id_ed25519.pub
o .ssh/id_rsa.pub
. Configura los permisos correctos:
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub
(O usa id_rsa
y id_rsa.pub
si generaste una clave RSA). La generación de la clave ha finalizado. Puedes comprobar los archivos con cualquier editor.
Copiando la clave pública para habilitar SSH sin contraseña
Puedes copiar la clave pública al equipo de destino de tres maneras:
- Usando el comando ssh-copy-id
- Usando SSH
- Manualmente
La primera opción es la más rápida y óptima. El comando ssh-copy-id
está habilitado por defecto en la mayoría de distribuciones de Linux. Si tienes problemas al usar ssh-copy-id
, o no tienes acceso a este comando, puedes probar las siguientes opciones.
Método 1: Usando el comando ssh-copy-id
La sintaxis básica de este comando es:
ssh-copy-id nombre_usuario_remoto@dirección_IP_remota
Si usas una clave no predeterminada, especifica el archivo:
ssh-copy-id -i ~/.ssh/id_ed25519.pub nombre_usuario_remoto@dirección_IP_remota
Aquí, necesitas introducir la contraseña del equipo remoto. Si la autenticación se realiza correctamente, la clave pública SSH generada se agrega al archivo authorized_keys
del equipo remoto. Después de agregar el registro, la conexión se cierra automáticamente.
Método 2: Copiando la clave pública usando SSH
Con este método, copiamos la clave pública a través de SSH. Esta opción solo funcionará si tienes acceso SSH al servidor mediante contraseña. El siguiente comando hará todo el trabajo:
cat ~/.ssh/id_ed25519.pub | ssh nombre_usuario_remoto@dirección_IP_remota "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
El registro se agregará al archivo authorized_keys del equipo remoto.
Método 3: Copiando la clave pública manualmente
El tercer método es un poco más complicado, ya que tendrás que hacerlo manualmente. Sin embargo, funciona perfectamente y puede usarse en algunos casos donde los otros métodos no funcionan. Tendrás que agregar manualmente el contenido del archivo id_ed25519.pub
(o id_rsa.pub
) al archivo ~/.ssh/authorized_keys
del servidor remoto.
Puedes ver el contenido del archivo id_ed25519.pub
con el comando cat:
cat ~/.ssh/id_ed25519.pub
Este comando mostrará la clave, que empieza con ssh-ed25519
(o ssh-rsa
para RSA). ¡Cópiala! Luego, en el servidor remoto, inicia sesión y crea una carpeta .ssh
si no existe:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
Crea o edita el archivo authorized_keys
y agrega la clave pública copiada:
echo clave_publica_SSH >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
clave_publica_SSH
es la clave pública que has copiado desde el equipo de origen. Verifica que authorized_keys
no contenga claves duplicadas.
Comprobando el acceso SSH sin contraseña
En este punto, el acceso SSH mediante clave debería estar correctamente activado y configurado. Para probarlo, intenta conectarte al servidor remoto desde el equipo de origen:
ssh nombre_usuario_remoto@dirección_IP_remota
Si todo ha ido bien, iniciarás sesión automáticamente sin introducir la contraseña. Si usaste una frase de contraseña, podrías necesitar ingresarla, a menos que uses ssh-agent
. Para depurar problemas, usa el modo verbose:
ssh -v nombre_usuario_remoto@dirección_IP_remota
Cómo deshabilitar el acceso SSH mediante clave
Si decides que SSH sin contraseña no te conviene, puedes deshabilitarlo siguiendo estos pasos. Abre el archivo de configuración de SSH /etc/ssh/sshd_config
con un editor como nano
. Busca o agrega la siguiente línea:
PubkeyAuthentication no
Para que los cambios surtan efecto, prueba la configuración:
sudo sshd -t
Si no hay errores, reinicia el servicio SSH. En Ubuntu:
sudo systemctl restart ssh
En CentOS:
sudo systemctl restart sshd
Alternativamente, usa systemctl reload sshd
para aplicar cambios sin interrumpir conexiones existentes.
Recomendaciones de seguridad adicionales
- Usa ssh-agent: Si configuraste una frase de contraseña, usa ssh-agent para gestionar la clave y evitar ingresarla repetidamente:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
- Deshabilita acceso root: En
/etc/ssh/sshd_config
, configuraPermitRootLogin
no para evitar conexiones como root. - Usa puertos no estándar: Cambia el puerto SSH (por ejemplo, a 2222) en /etc/ssh/sshd_config con Port 2222 para reducir ataques automatizados.
- Configura
StrictModes
: Asegúrate de queStrictModes yes
esté en/etc/ssh/sshd_config
para rechazar configuraciones con permisos inseguros. - Usa un firewall: Configura
ufw
ofirewalld
para limitar el acceso SSH a direcciones IP confiables. - Respalda tus claves: Guarda una copia segura de tu clave privada en un lugar fuera del sistema.
Conclusión
Esto concluye la guía sobre cómo configurar el inicio de sesión SSH sin contraseña, así como deshabilitar el acceso SSH mediante clave si decides que no es adecuado. ¡Espero que este manual te sea útil! ¡Éxito, y ten cuidado de ti mismo y tus datos!
¿Qué te parece?
Es bueno conocer tu opinión. Deja un comentario.