Optimizado: Configuración de SSH en dos pasos sin contraseña en Ubuntu

Optimizado: Configuración de SSH en dos pasos sin contraseña en Ubuntu

08.12.2023
Autor: HostZealot Team
2 min.
129

Lograr una experiencia de usuario más conveniente es una de las direcciones importantes de la organización del proceso de trabajo para cada usuario. Si tiene un servidor VPS o dedicado, utiliza el mismo dispositivo para acceder a él cada vez y está cansado de introducir la contraseña cada vez que empieza a trabajar con su servidor, entonces podría estar interesado en configurar un inicio de sesión sin contraseña en su servidor. Lo que necesitará es configurar el método de autenticación de clave pública, que es una alternativa al método de autenticación con contraseña. En la siguiente guía, veremos en detalle cómo configurarlo en tu escritorio remoto si eres usuario de Ubuntu.

Guía rápida para establecer la autenticación SSH sin contraseña

Paso 1: Generar un par de claves públicas/privadas en el escritorio de Ubuntu

El primer paso es generar el par de claves pública/privada en su escritorio Ubuntu. Para ello, introduzca el comando en su escritorio Ubuntu (no en su servidor):

ssh-keygen -t rsa -b 4096

El comando se encarga de crear el par de claves de tipo RSE por defecto

  • t se refiere a "tipo".
  • b se refiere a bits. La longitud estándar de una clave es de 3072 bits. Puede aumentarla opcionalmente para conseguir un mayor nivel de seguridad.

Puede pulsar Intro para aceptar la ubicación predeterminada (~/.ssh/id_rsa) y dejar la frase de contraseña vacía por comodidad o añadir una para mayor seguridad.

Después de que todo se haya generado, verás algo como

Su identificación se ha guardado en /home/nombre_de_usuario/.ssh/id_rsa.

Su clave pública se ha guardado en /home/tu_nombre_de_usuario/.ssh/id_rsa.pub.

Paso 2: Cargar su clave pública en un servidor Linux remoto

Ahora que todo lo que necesita ha sido generado, puede subirlo a su servidor. No tiene por qué ser un servidor Ubuntu, puede ejecutar cualquier distribución de Linux siempre y cuando el servidor OpenSSH se ejecute en él.

Primero, introduce el siguiente comando para copiar el servidor público en el escritorio remoto. " your_username" y "remote_server_ip" deben ser reemplazados por el nombre de usuario y la dirección IP apropiados.

ssh-copy-id your_username@remote_server_ip

A continuación, se le pedirá que introduzca la contraseña del servidor remoto si ha establecido una frase de contraseña en el paso anterior.

En cuanto se copie la clave, verá una salida similar:

Number of keys added: 1

A partir de ahora habrá establecido un inicio de sesión sin contraseña en su servidor.

Desactivación de la autenticación basada en contraseña

Después de la configuración de la autenticación sin contraseña, puede ir más allá y desactivar la autenticación basada en contraseña, dejando sólo la basada en la clave SSH con el fin de aumentar aún más su seguridad, haciendo que su servidor sea a prueba de fuerza bruta. Para hacerlo:

  • Acceda a su servidor:
ssh your_username@remote_server_ip
  • Abra el archivo /etc/ssh/sshd_config en el servidor con su editor de texto preferido (por ejemplo, Nano o Vim)
  • Busca la línea siguiente y cambia su valor a no:
PasswordAuthentication no
  • Busque la línea ChallengeResponseAuthentication y asegúrese de que su estado también es no
ChallengeResponseAuthentication no
  • Guarde y salga del editor de texto.
  • Reinicie el servicio SSH para aplicar los cambios:
Debian/Ubuntu:
sudo systemctl restart ssh
RHEL/CentOS:
sudo systemctl restart sshd

Ahora la autenticación por contraseña debe estar totalmente deshabilitada, y los intentos de acceso sin claves de autenticación no funcionarán con salidas como Permiso denegado (clave pública) o Leer: Connection reset by peer.

Tenga en cuenta que tanto PasswordAuthentication como ChallengeResponseAuthentication deben estar en "no", de lo contrario la autenticación por contraseña seguirá estando disponible.

Proteja su par de claves públicas/privadas con copias de seguridad.

Tras completar la configuración del par de claves pública/privada, el siguiente paso es crear copias de seguridad de las mismas. Dado que las claves son ahora necesarias para iniciar sesión en su servidor, perderlas puede hacer que pierda el acceso a su servidor. Por esta razón, lo que debe hacer es crear copias de seguridad de su par de claves pública/privada en un lugar seguro al que pueda acceder fácilmente (como una unidad USB, etc.) Veamos paso a paso cómo crear una copia de seguridad de su par de claves pública/privada.

  • Busca la ubicación de sus claves. Normalmente, debería ser algo como el directorio ~/.ssh.

Copie su par de claves: Copie el par de claves a la ubicación segura deseada con el comando cp

cp ~/.ssh/id_rsa ~/.ssh/id_rsa_backup
cp ~/.ssh/id_rsa.pub ~/.ssh/id_rsa.pub_backup

id_rsa e id_rsa.pub deben sustituirse por los nombres reales de los archivos de claves, si difieren.

  • Ahora que se ha copiado el par de claves pública/privada, debes guardarlo en un lugar seguro.

Además, si la ubicación que has elegido es otro dispositivo informático, tienes que cambiar el usuario de las claves en este otro dispositivo:

sudo chown nuevo-usuario:nuevo-usuario ~/.ssh/id_rsa*

Con esto, también será posible acceder a su servidor desde otro dispositivo.

Restauración del par de claves

Si en algún momento necesita restaurar su par de claves a partir de la copia de seguridad que ha realizado según las instrucciones anteriores, puede seguir estos pasos:

  • Copie los archivos de la copia de seguridad: Copie los archivos del par de claves que ha respaldado en su directorio ~/.ssh:
cp ~/.ssh/id_rsa_backup ~/.ssh/id_rsa
cp ~/.ssh/id_rsa.pub_backup ~/.ssh/id_rsa.pub
  • Establezca los permisos adecuados: Asegúrese de que los permisos de estos archivos son seguros:
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
  • Pruebe el par de claves: Ahora, para comprobar que todo funciona, pruebe el par de claves conectándose por SSH a su servidor
ssh your_username@remote_server

Si su servidor está protegido con una contraseña, se le pedirá que la introduzca.

Aumento de la seguridad mediante el almacenamiento de claves de contraseña en el agente SSH

Si utiliza un equipo Linux con línea de comandos, tendrá que introducir la frase de contraseña cada vez que acceda a un dispositivo Linux diferente a través de SSH. Para solucionar esto, tendrá que almacenar la frase de contraseña clave en el agente SSH. Para hacerlo:

  • Instale keychain:
sudo apt install keychain
  • Realice cambios en el archivo .bash_profile o .profile para automatizar la ejecución de los comandos:
/usr/bin/keychain $HOME/.ssh/id_rsa
source $HOME/.keychain/$HOSTNAME-sh
  • Cuando vuelva a iniciar sesión, obtendrá un resultado similar a éste:

Last login: Sun Aug 12 15:20:07 2020 from 203.45.67.89


  • keychain 2.7.1 ~ http://www.funtoo.org
  • Found existing ssh-agent: 17892
  • Adding 1 ssh key(s): /home/johndoe/.ssh/id_rsa

Enter passphrase for /home/johndoe/.ssh/id_rsa:

  • ssh-add: Identities added: /home/johndoe/.ssh/id_rsa

Ahora que el llavero está configurado y el par de claves está guardado, no necesitará introducir la frase de contraseña cada vez que acceda a su servidor SSH.

Modificación de la frase de contraseña de la clave privada

Si eventualmente quieres cambiar la frase de contraseña de su clave privada, puede utilizar el siguiente comando:

ssh-keygen -f ~/.ssh/id_rsa -p
Artículos Relacionados