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.

¿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!

Author
El autor

Deyimar A.

Deyi es una entusiasta del marketing digital, con experiencia en diseño de páginas web, creación de contenido, copywrite y SEO. Forma parte del equipo de SEO & Localization de Hostinger. En su tiempo libre, le gusta desarrollar proyectos, leer un libro o ver una buena película.