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!