Es una gran idea iniciar sesión en su servidor SSH sin contraseña. En serio, deshazte de eso. No es necesario usar una contraseña en uno de los servicios más atacados en servidores Linux, ¿verdad? Preparar Asegure el servidor SSH Usar la autenticación estándar basada en contraseña es una mala idea. Los atacantes pueden descifrar fácilmente las contraseñas, y cuando son lo único que se interpone entre el mal actor y su servidor, definitivamente debería sentirse nervioso. Esta es la razón por la que la autenticación basada en claves RSA es mucho mejor. Puede configurar y asegurar su servidor Linux para permitir el acceso solo desde computadoras que tienen claves RSA que ya han sido aceptadas. Todos los demás serán rechazados inmediatamente. Como beneficio adicional, puede generar estas claves con o sin contraseña, depende totalmente de usted. A pesar de esto, una clave segura sin contraseña es algo bueno en la mayoría de los casos. En esta guía, aprenderemos cómo habilitar inicios de sesión SSH sin contraseña en Linux.

Si también usa máquinas Linux en casa, tiene el beneficio adicional de la comodidad. Supongamos que desea configurar el reenvío SSH X desde su estación de trabajo Linux a su computadora portátil. ¿Realmente desea ingresar su contraseña cada vez que inicia un programa remoto? Configure las claves SSH, no será necesario.
Instalar los paquetes
Hay algunos paquetes que necesita. Probablemente ya tengas algunos, pero es una buena idea echarles un vistazo. Los paquetes son los mismos tanto en el servidor como en el cliente. Sin embargo, también existe una buena posibilidad de que ambas máquinas sean servidores y clientes (estado de origen) de la otra, por lo que es posible que desee asegurarse de tener esos paquetes instalados.
El metapaquete OpenSSH no está instalado de forma predeterminada en otros sistemas Debian أو Ubuntu. Si aún no lo tiene instalado, puede hacerlo ejecutando el siguiente comando:
sudo apt instalar ssh

Crea tu propia clave SSH en Linux
es muy fácil Generar una clave SSH en linux Simplemente dígale a OpenSSH que necesita generar la clave. También es una buena idea especificar la cantidad de bits con el indicador -b y el tipo con -t. Lo mejor es una clave de 4096 bits, ya que proporciona un cifrado más sólido.
ssh-keygen -t ed25519
Primero, la herramienta le preguntará dónde desea almacenar la clave. Simplemente haga clic en Acceder al directorio predeterminado. Cuando solicite una contraseña, déjelo en blanco para la clave sin contraseña y la autenticación sin contraseña. Si desea utilizar una contraseña para su clave, introdúzcala aquí.
Su computadora tardará unos segundos en generar su clave. Cuando haya terminado, imprimirá una representación de arte ASCII de su clave en el dispositivo.
Envíe su clave al host remoto de Linux
Para usar su clave, deberá enviarla a su servidor remoto. OpenSSH también tiene otra herramienta integrada para eso. Dígale dónde está su clave y con qué usuario en el servidor asociarla.
ssh-copy-id -i ~/.ssh/id_ed25519.pub nombredeusuario@ip_remote_host
reemplazar host_remoto_ip Con la dirección IP real del host remoto, que administrará a través de SSH. Reemplace el nombre de usuario con el nombre de usuario real en el host remoto.

Es necesario que utilice la opción -i para especificar el archivo de identidad que contiene su clave pública. Si intenta usar una clave SSH sin esta opción, es posible que obtenga un error.

Prueba tu conexión SSH en Linux
Con la clave SSH en el servidor remoto, ahora puede probar si su conexión funciona correctamente.
Inicie sesión con el siguiente comando:
ssh nombredeusuario@ip_remote_host
El host remoto lo iniciará sin pedirle la contraseña de la cuenta de usuario.

Sin embargo, si comete un error durante el proceso, el demonio SSH volverá automáticamente a la autenticación de contraseña para su cuenta de usuario. Esto le permite continuar accediendo a su servidor remoto incluso si tiene una clave RSA que no funciona.

Configurar SSH para bloquear contraseñas
Para obtener la mejor protección, debe deshabilitar los inicios de sesión con contraseña SSH en su servidor Linux. De manera similar a habilitar la autenticación de dos factores en SSH, esto evita que alguien entre a la fuerza en su servidor.

Es importante asegurarse de que puede iniciar sesión de manera confiable con su clave SSH antes de hacer esto, ya que es posible bloquearse en el servidor remoto si tiene una clave rota.
Puede encontrar un archivo de configuración Demonio SSH su archivo en “/etc/ssh /sshd_config". Abra el archivo en el servidor con sudo y su editor de texto favorito. Por ejemplo, abra este archivo con nano ejecutando el siguiente comando:
sudo nano / etc / ssh / sshd_config
Encuentre las líneas a continuación haciendo clic en Ctrl + W y edítelo para que se parezca al ejemplo. Descomente ambas entradas y cambie los valores a No!
contraseña
PasswordAuthentication no PermitEmptyPasswords no

colocar Autenticación de contraseña Ya sea para usar la autenticación de contraseña. Ponemos esto en "No" Porque solo queremos usar claves SSH.
determina PermitEmptyContraseñas Si el servidor permite iniciar sesión con una contraseña en blanco. Nunca debe permitir esto, así que lo configuramos para "No".

A continuación, busque la línea "UsePAM" y cámbiela a "No". Esto evitará que el daemon utilice métodos de autenticación (contraseña, Kerberos, etc.) que no sean claves SSH.
Usar PAM no

Guarde el archivo haciendo clic en Ctrl + O , Entonces Ctrl + X y recargar servidor SSH.
sudo systemctl reiniciar ssh
Ahora que ha configurado con éxito su servidor para usar solo claves SSH para la autenticación, cualquier persona que intente iniciar sesión sin una clave RSA válida será denegada de inmediato.

Preguntas frecuentes
P 1. Recibo un mensaje de "conexión rechazada" cuando envío una clave SSH a mi servidor Linux. ¿Como puedó resolver esté problema?
respuesta. Asegúrese de que el servidor SSH se esté ejecutando en el host remoto. Puede verificar esto ejecutando sudo systemctl status ssh. Si el servicio no se está ejecutando, puede iniciarlo con este comando: sudo systemctl start ssh.
Si se está ejecutando un firewall en el servidor, asegúrese de que esté abierto el puerto 22. Puede hacerlo ejecutando sudo ufw state. Si SSH no aparece en la lista, puede habilitarlo ejecutando este comando: sudo ufw allow ssh.
P2: Recibo el error "Permiso denegado (clave pública)" cuando intento iniciar sesión. ¿Qué debo hacer?
respuesta. Este error significa que configuró su servidor para usar claves para la autenticación, pero aún está intentando iniciar sesión con una contraseña. Esto puede deberse a que falta una clave RSA o a una configuración de SSH incorrecta. Asegúrese de que su clave pública se copie en el servidor correctamente y que especifique la clave pública correcta al conectarse.
P 3. Recibo el error "Error en la verificación de la clave del host" cuando intento conectarme. ¿Como puedó resolver esté problema?
respuesta. Este error significa que la clave de host del servidor SSH ha cambiado. Esto puede suceder si el servidor se ha reinstalado. Puede regenerar una nueva clave pública y copiarla en el host remoto. Repita los pasos de este artículo para regenerar y agregar la nueva clave al servidor.
P4: ¿Es posible utilizar varias claves SSH en el mismo servidor Linux remoto?
respuesta. si. Puede usar la opción -f en OpenSSH para especificar la clave exacta que desea usar para conectarse a un servidor remoto. Por ejemplo, ejecutar
ssh -f ~/.ssh/id_rsa_2 username@remote_ip_address
Esto lo conectará a su servidor remoto utilizando la clave "id_rsa_2" en lugar de la predeterminada "id_rsa".
Sin embargo, es importante tener en cuenta que este comando solo funcionará si el servidor remoto ya conoce su nueva clave. Primero debe copiarlo en su servidor remoto usando ssh-copy-id. De manera similar a los pasos anteriores, puede hacerlo a través de una contraseña o autenticación de clave RSA.
P 5. Recibo un error de Permiso denegado cuando intento copiar mi clave SSH a mi servidor.
respuesta. Lo más probable es que este problema se deba a un problema de permisos en su servidor remoto. En la mayoría de los casos, la utilidad ssh-copy-id debería resolver adecuadamente cualquier problema de acceso una vez que se conecta a su servidor remoto. Sin embargo, hay casos en los que esta función se atasca y no copia correctamente "id_rsa" en su máquina local.
Para solucionar esto, inicie sesión en el servidor remoto y ejecute
chmod 700 /home/$USER/.ssh/* && chmod 600 /home/$USER/.ssh.
Esto establecerá los bits de permiso correctos tanto para la carpeta ".ssh" como para su contenido.







