GNU/Linux >> Tutoriales Linux >  >> Linux

Genere claves SSH para iniciar sesión sin contraseña en Ubuntu

SSH (Secure Shell) es un protocolo de red criptográfico que se utiliza para establecer conexiones seguras entre un cliente remoto y un servidor, utilizando el TCP protocolo de seguridad y confiabilidad.

Las conexiones basadas en SSH admiten varios métodos de autenticación, algunos de los cuales son:

  • Autenticación basada en contraseña
  • Autenticación basada en clave

De forma predeterminada, la creación de una nueva conexión SSH entre dos máquinas utilizará la autenticación basada en contraseña. Pero si inicia sesión en un servidor con frecuencia desde el mismo cliente, puede ser engorroso e irritante escribir la contraseña cada vez que inicia sesión en el servidor.

Este tutorial presenta la otra autenticación alternativa para iniciar sesión en el servidor remoto, usando claves públicas .

¡Veamos cómo podemos configurar esto en nuestras máquinas cliente y servidor particulares que usamos con frecuencia, para que podamos iniciar sesión automáticamente desde esta máquina de forma segura!

Comprobar las claves SSH existentes en la máquina del cliente

La primera parte trata de generar un par de claves pública-privada en el cliente máquina. La clave pública se copia posteriormente en el servidor y se utiliza para la autenticación.

Antes de configurar cualquier clave SSH, asegurémonos de que no haya ninguna clave existente ya presente para esta combinación cliente-servidor.

Ejecutemos este script bash para verificar si el archivo existe (alternativamente, puede escribirlo directamente en la terminal)

if test -f ~/.ssh/id_*.pub; then
    echo "Found"
else
    echo "Not Found"
fi

Si obtiene "No encontrado", significa que no existe dicho archivo y estamos listos para crear una nueva clave para esta conexión.

De lo contrario, puede usar directamente las claves existentes y omitir el siguiente paso. Pero si no desea utilizar las claves antiguas, puede eliminar las claves antiguas y generar otras nuevas siguiendo el siguiente paso.

Generar un nuevo par de claves SSH para las máquinas cliente-servidor

El siguiente comando generará un nuevo 4096 bits par de claves SSH con su identificación (¡puede ser cualquier cosa identificable!) como comentario:

ssh-keygen -t rsa -b 4096 -C "[email protected]"

Después de configurar la ubicación de la clave y las frases de contraseña ejecutando este comando, ahora tendremos la nueva clave generada para nosotros, junto con la huella digital de la clave.

Ahora, verifiquemos si la clave privada-pública realmente está allí, usando ls .

ls ~/.ssh/id_*

Debería obtener el siguiente resultado :

/root/.ssh/id_rsa  /root/.ssh/id_rsa.pub

Esto significa que id_rsa es su clave privada y id_rsa.pub es su clave pública.

NOTA :Nunca comparta su clave privada entre máquinas. Es por eso que tiene una clave pública. Entonces podemos copiar la misma clave pública a múltiples servidores a ssh mientras mantiene la seguridad adicional utilizando la clave privada en su máquina local.

Copiar la clave pública al Servidor

Dado que tenemos nuestro par de claves SSH en nuestro cliente, para poder iniciar sesión en el servidor remoto, debemos copiar la clave pública allí.

Podemos usar scp para copiar archivos a nuestro servidor, pero hay una mejor alternativa para ssh llaves, usando ssh-copy-id .

Puede instalar ssh-copy-id usando su administrador de paquetes si no está disponible.

ssh-copy-id server_username@server_ip

Después de ingresar la contraseña del nombre de usuario del servidor, ahora seremos autenticados para iniciar sesión en el servidor usando las claves públicas.

El resultado será similar a este:

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/client_user/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
SERVER_USER@SERVER_IP's password: 


Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'SERVER_USER@SERVER_IP'"
and check to make sure that only the key(s) you wanted were added.

Esto significa que podemos usar ssh a esta máquina en particular de nuestro cliente con la autenticación extra basada en clave!

Para probarlo, prueba ssh yendo al servidor ahora!

ssh server_user@server_ip

Problemas potenciales de depuración

¡Pero algunos de ustedes aún pueden recibir la solicitud de contraseña, junto con la frase de contraseña basada en clave! ¿Qué está pasando?

Una posible razón se detalla aquí. Parece que es posible que no tengamos los permisos adecuados en nuestro ~/.ssh directorio en el servidor remoto . El contenido de HOME directorio ~ , el ~/.ssh directorio y el ~/.ssh/authorized_keys El archivo debe ser escribible solo por nosotros. De lo contrario, intuye que otros usuarios pueden acceder, por lo que también solicita la contraseña.

Primero verifiquemos los permisos de nuestro directorio de inicio.

Como solo podemos escribir, no necesitamos cambiar los permisos para este directorio. Del mismo modo, mire los modos y cambie el modo usando chmod .

Cambiemos los permisos para estos archivos y directorios usando chmod -R ~/.ssh 700 recursivamente.

Ahora, pruébelo para ver si esto funciona.

Problemas potenciales de depuración - Parte 2

Si aún no puede hacerlo funcionar, este hilo menciona que algunas de las opciones en el archivo de configuración de ssh pueden estar deshabilitadas.

Compruebe /etc/ssh/sshd_config en el servidor para asegurarse de que RSAAuthentication , PubkeyAuthentication y UsePAM las opciones no están deshabilitadas.

Además, asegúrese de establecer explícitamente PasswordAuthentication no en la configuración, para deshabilitar la autenticación basada en contraseña para nuestro usuario.

Como puede ver, ¡este fue mi caso! La PubKeyAuthentication también estaba deshabilitado y, por lo tanto, me solicitó la contraseña, ¡ya que la sesión no usó esto como el modo principal de autenticación!

Descomenté esta línea y reinicié ssh para aplicar los cambios.

sudo systemctl restart ssh

¡Ahora, esto hizo que la autenticación sin contraseña finalmente funcionara para mí! Con suerte, también habrá encontrado una solución en este momento.

Finalmente hemos configurado ssh trabajar sin contraseña!

Conclusión

En este tutorial, le mostramos cómo puede configurar ssh método de autenticación basado en clave pública e inicie sesión en un servidor sin contraseña!


Linux
  1. 3 formas en que configuro SSH para la privacidad

  2. Cómo configurar claves SSH

  3. Cómo configurar claves SSH en Ubuntu 16.04

  4. Cómo configurar claves SSH en Ubuntu 18.04

  5. Genere un par SSH con AES-256-CBC

Cómo configurar claves SSH en Ubuntu 18.04

Cómo configurar claves SSH en Ubuntu 20.04

Inicio de sesión SSH sin contraseña en 3 pasos simples

Genere claves RSA con SSH usando PuTTYgen

Cómo mejorar la seguridad SSH en Ubuntu 18.04

Cliente WinSCP para Ubuntu