Cómo configurar SSH sin contraseña en Linux
SSH significa Secure Shell, en inglés, que en español sería “Escudo de Seguridad”. Se trata de un protocolo de red de código abierto que se puede utilizar para iniciar sesión en servidores y ejecutar comandos de forma remota, ¡lo cual es excelente para los usuarios de VPS!
Hay dos formas de habilitar SSH:
- Autenticación basada en contraseña
- Autenticación basada en clave pública
La autenticación basada en clave pública también se le conoce como SSH sin contraseña.
Tabla de Contenidos
¿Por qué usar SSH sin contraseña?
A veces nos puede parecer que las contraseñas son difíciles de recordar e incómodas, en especial si estamos en un entorno donde necesitamos ingresar una contraseña con frecuencia.
Algunas ventajas de usar SSH sin contraseña son:
- Ofrece un inicio de sesión fácil y no interactivo. Los usuarios no tienen que escribir la contraseña para cada nueva sesión.
- Es una alternativa más segura en comparación con las contraseñas, ya que funciona con criptografía de clave pública-privada.
- Es más confiable.
- Brinda una mejor gestión de autenticación y autorización.
- Es una buena solución tanto para infraestructuras pequeñas como grandes.
- Es fácil de construir y mantener.
Para comenzar a usar SSH sin contraseña en Linux, debes generar una clave pública. En este tutorial, nos centraremos en explicar cómo hacerlo en SSH versión 2, que es el protocolo más reciente y más seguro.
Inicia sesión en tu servidor VPS utilizando SSH, ¡y estarás listo para comenzar!
Primero, puedes verificar si la clave SSH para la máquina cliente ya existe. Esto evitará sobrescribir la configuración actual. Puedes usar el siguiente comando para averiguarlo:
ls -al ~/.ssh/id_*.pub
Si encuentras una clave existente puedes: omitir los pasos de generación de clave SSH, anular la configuración actual o crear una copia de seguridad de la clave existente. Si la clave no existe, verás el siguiente resultado:
ls: cannot access /users/appsadm/.ssh/id_*.pub: No such file or directory
Ahora podrás pasar a generar la clave SSH.
SSH sin contraseña en Ubuntu y CentOS
Para generar una clave pública y privada en Ubuntu o CentOS, usa el comando:
ssh-keygen -t rsa
La opción -t significa tipo, mientras que RSA es el protocolo utilizado para la generación de claves. RSA es el tipo predeterminado, así que también puedes usar la versión más simple del comando: ssh-keygen.
La clave predeterminada es de 2048 bits. Sin embargo, si deseas una seguridad más fuerte, puedes cambiar el valor a 4096 bits. En ese caso, el comando será:
ssh-keygen -t rsa -b 4096
Este es un proceso interactivo de generación de claves y se te harán algunas preguntas, como:
- Ingresa el archivo en el que guardarás la clave (/home/.ssh.id_rsa)
- Ingresa la passphrase (vacía si quieres dejarlo sin passphrase)
Puedes presionar Intro para ambas preguntas y el sistema tomará los valores predeterminados. La passphrase es una cadena de caracteres, usada para cifrar la clave privada; sin embargo, no es obligatoria y puede dejarse en blanco. La clave privada se guardará en la ubicación predeterminada: .ssh/id_rsa.
La clave pública se guardará en el archivo .ssh/id_rsa.pub. Así habrás completado el paso de generación de claves. Puedes verificar los archivos utilizando cualquier editor.
Copiar la clave pública para habilitar SSH sin contraseña
La copia de la clave pública en una máquina de destino se puede hacer de tres maneras:
- Usando el comando ssh-copy-id
- Usando SSH
- Manualmente
La primera opción es la más preferida y la más rápida. El comando ssh-copy-id está incluido por defecto en la mayoría de las versiones de Linux. En caso de que tengas problemas al usar ssh-copy-id o no tengas acceso a este comando, puedes probar las siguientes opciones.
Método 1: usar el comando ssh-copy-id
La sintaxis básica para usar este comando es la que se detalla a continuación:
ssh-copy-id remote_username@remote_IP_Address
Al escribirlo recibirás un mensaje con la contraseña de la máquina remota. Una vez que la autenticación sea exitosa, la clave pública SSH generada se agregará al archivo authorized_keys del equipo remoto. Después de agregar la clave, la conexión se cerrará automáticamente.
Método 2: Copia la clave privada usando SSH
El siguiente método usa SSH para copiar la clave privada. Puedes usar esta alternativa cuando tienes acceso al servidor con contraseña SSH. El siguiente comando se encargará del proceso. Solo debes ingresar el nombre de usuario y la dirección IP de la máquina remota.
cat ~/.ssh/id_rsa.pub | ssh remote_username@remote_ip_address "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Esto agregará la clave al archivo authorized_keys de la máquina remota.
Método 3: Copiar manualmente la clave pública
El tercer método es un poco más difícil ya que es completamente manual. Sin embargo, en caso de que los otros métodos no funcionen, ¡puedes usar este! Deberás agregar manualmente el contenido del archivo id_rsa.pub al archivo ~/.ssh/authorized_keys del servidor remoto.
En el método fuente, puedes mostrar el contenido del archivo id_rsa.pub utilizando el editor vi o el comando cat:
cat ~/.ssh/id_rsa.pub
Esto mostrará una salida que contiene la clave, la cual comienza con ssh-rsa. ¡Cópiala! A continuación, en el servidor remoto, inicia sesión y cree el archivo .ssh si no existe.
mkdir -p ~/.ssh
De manera similar, puedes crear el archivo authorized_keys. Agrega la clave pública SSH copiada al archivo vacío como se muestra a continuación:
echo SSH_public_key >> ~/.ssh/authorized_keys
SSH_public_key sería la clave pública que copiaste de la máquina de origen. Comienza con ssh-rsa.
Una vez que copies la clave, puedes proporcionar los permisos necesarios al directorio .ssh de servidores remotos mediante el comando chmod.
chmod -766 ~/.ssh
Probar el SSH sin contraseña
Si llegaste hasta acá e hiciste todo, deberías haber activado SSH sin contraseña con éxito y haber realizado la configuración básica. Para probar la función, puedes intentar acceder al servidor remoto a través del servidor de origen. La sintaxis del comando se vería así:
ssh remote_username@remote_IP_Address
Si todo funcionó correctamente, podrás iniciar sesión automáticamente sin tener que ingresar la contraseña.
Cómo deshabilitar SSH sin contraseña
Si decides que SSH sin contraseña no es para ti, puedes deshabilitarlo siguiendo los pasos a continuación. Para realizar este cambio, abra el archivo de configuración SSH: /etc/ssh/ssh_config. Una vez más, cualquier editor funcionará, en nuestro caso usamos nano. Aquí encontrarás una entrada con el comando PasswordAuthentication. Modifica las líneas como se muestra:
PasswordAuthentication no ChallengeResponseAuthentication no UsePAM no
Una vez que hayas cambiado esto, guarda el archivo y reinicia SSH. A continuación te mostramos cómo hacerlo en Ubuntu:
sudo systemctl restart ssh
Y el comando para CentOS 7:
sudo systemctl restart sshd
En conclusión
Dicho esto, estaría completo nuestro tutorial sobre SSH sin contraseña. Cubrimos la configuración de SSH sin contraseña, cómo funciona y cómo deshabilitarla. ¡Esperamos que este tutorial te haya sido útil! Recuerda, mantén tu equipo seguro, ¡es mejor prevenir que lamentar!
Comentarios
August 17 2020
muy bueno el tutorial! si señora..
August 20 2020
¡Que bueno que te haya sido útil Paco!
March 11 2021
Una aclaración, para copiar en el servidor la clave del cliente es más sencillo ejecutar la siguiente instrucción -ssh-keygen -ssh-copy-id 'direccion_ip' -p 22