Cómo configurar claves SSH en Debian 11

Introducción

Índice
  1. Introducción
  • Paso 1: Crear el par de claves RSA
  • Paso 2: Copiar la clave pública al servidor Debian
    1. Copiar clave pública usandossh-copy-id
    2. Copiar clave pública mediante SSH
    3. Copiar la clave pública manualmente
  • Paso 3: Autenticación en el servidor Debian mediante claves SSH
  • Paso 4: Desactivar la autenticación de contraseña en su servidor
  • Conclusión
  • SSH, o secure shell, es un protocolo cifrado que se utiliza para administrar y comunicarse con servidores. Cuando se trabaja con un servidor Debian, es probable que pase la mayor parte del tiempo en una sesión de terminal conectada a su servidor a través de SSH.

    En esta guía, nos centraremos en configurar claves SSH para una instalación básica de Debian 11. Las claves SSH proporcionan una forma fácil y segura de iniciar sesión en su servidor y se recomiendan para todos los usuarios.

    Paso 1: Crear el par de claves RSA

    El primer paso es crear un par de claves en la máquina cliente (normalmente su ordenador):

    1. ssh-keygen

    De forma predeterminada, ssh-keygense creará un par de claves RSA de 3072 bits, que es lo suficientemente seguro para la mayoría de los casos de uso (opcionalmente, puede pasar la -b 4096bandera para crear una clave más grande de 4096 bits).

    Después de ingresar el comando, debería ver el siguiente resultado:

    OutputGenerating public/private rsa key pair.Enter file in which to save the key (/your_home/.ssh/id_rsa):

    Presione Enter para guardar el par de claves en el .ssh/subdirectorio de su directorio de inicio o especifique una ruta alternativa.

    Si ya ha generado un par de claves SSH, es posible que vea el siguiente mensaje:

    Output/home/your_home/.ssh/id_rsa already exists.Overwrite (y/n)?

    Advertencia: si elige sobrescribir la clave en el disco, ya no podrá autenticarse con la clave anterior. Tenga mucho cuidado al seleccionar Sí, ya que se trata de un proceso destructivo que no se puede revertir.

    Luego deberías ver el siguiente mensaje:

    OutputEnter passphrase (empty for no passphrase):

    Aquí puede ingresar opcionalmente una contraseña segura, lo cual es muy recomendable. Una contraseña agrega una capa adicional de seguridad para evitar que usuarios no autorizados inicien sesión. Para obtener más información sobre seguridad, consulte nuestro tutorial sobre Cómo configurar la autenticación basada en clave SSH en un servidor Linux .

    Deberías ver entonces el siguiente resultado:

    OutputYour identification has been saved in /your_home/.ssh/id_rsa.Your public key has been saved in /your_home/.ssh/id_rsa.pub.The key fingerprint is:SHA256:5E2BtTN9FHPBNoRXAB/EdjtHNYOHzTBzG5qUv7S3hyM root@debian-suricataThe key's randomart image is:+---[RSA 3072]----+|         oo .O^XB||        .  +.BO%B||        . = .+B+o||       o o o . =.||        S .   . =||               o.||               .o||            E o..||             . ..|+----[SHA256]-----+

    Ahora tienes una clave pública y una privada que puedes usar para autenticarte. El siguiente paso es colocar la clave pública en tu servidor para que puedas usar la autenticación basada en clave SSH para iniciar sesión.

    Paso 2: Copiar la clave pública al servidor Debian

    La forma más rápida de copiar su clave pública al host Debian es usar una utilidad llamada ssh-copy-id. Debido a su simplicidad, este método es altamente recomendado si está disponible. Si no tiene ssh-copy-iduna disponible en su máquina cliente, puede usar uno de los dos métodos alternativos provistos en esta sección (copiar mediante SSH basado en contraseña o copiar la clave manualmente).

    Copiar clave pública usandossh-copy-id

    La ssh-copy-idherramienta está incluida de forma predeterminada en muchos sistemas operativos, por lo que es posible que la tengas disponible en tu sistema local. Para que este método funcione, ya debes tener acceso SSH con contraseña a tu servidor.

    Para utilizar la utilidad, solo tiene que especificar el host remoto al que desea conectarse y la cuenta de usuario a la que tiene acceso SSH mediante contraseña. Esta es la cuenta a la que se copiará su clave SSH pública.

    La sintaxis es:

    1. ssh-copy-id username@remote_host

    Es posible que vea el siguiente mensaje:

    OutputThe authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.Are you sure you want to continue connecting (yes/no)? yes

    Esto significa que su computadora local no reconoce el host remoto. Esto sucederá la primera vez que se conecte a un nuevo host. Escriba “sí” y presione ENTERpara continuar.

    A continuación, la utilidad escaneará su cuenta local en busca de la id_rsa.pubclave que creamos anteriormente. Cuando encuentre la clave, le solicitará la contraseña de la cuenta del usuario remoto:

    Output/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 keysusername@203.0.113.1's password:

    Escriba la contraseña (no se mostrará lo que escriba por motivos de seguridad) y presione ENTER. La utilidad se conectará a la cuenta en el host remoto utilizando la contraseña que proporcionó. Luego, copiará el contenido de su ~/.ssh/id_rsa.pubclave en un archivo en el directorio de inicio de la cuenta remota ~/.sshllamado authorized_keys.

    Deberías ver el siguiente resultado:

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

    En este punto, su id_rsa.pubclave se ha cargado en la cuenta remota. Puede continuar con el paso 3 .

    Copiar clave pública mediante SSH

    Si no tiene ssh-copy-iddisponible, pero tiene acceso SSH basado en contraseña a una cuenta en su servidor, puede cargar sus claves usando un método SSH convencional.

    Podemos hacer esto usando el catcomando para leer el contenido de la clave SSH pública en nuestra computadora local y canalizarla a través de una conexión SSH al servidor remoto.

    Por otro lado, podemos asegurarnos de que el ~/.sshdirectorio exista y tenga los permisos correctos en la cuenta que estamos usando.

    Luego podemos generar el contenido que enviamos a un archivo llamado authorized_keysdentro de este directorio. Usaremos el símbolo de redirección para agregar el contenido en lugar de sobrescribirlo. Esto nos permitirá agregar claves sin destruir las claves agregadas previamente.

    El comando completo se ve así:

    1. cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh touch ~/.ssh/authorized_keys chmod -R go= ~/.ssh cat ~/.ssh/authorized_keys"

    Es posible que vea el siguiente mensaje:

    OutputThe authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.Are you sure you want to continue connecting (yes/no)? yes

    Esto significa que su computadora local no reconoce el host remoto. Esto sucederá la primera vez que se conecte a un nuevo host. Escriba “sí” y presione ENTERpara continuar.

    Luego se le solicitará que ingrese la contraseña de la cuenta de usuario remota:

    Outputusername@203.0.113.1's password:

    Después de introducir la contraseña, el contenido de la id_rsa.pubclave se copiará al final del authorized_keysarchivo de la cuenta del usuario remoto. Continúe con el paso 3 si la operación se realizó correctamente.

    Copiar la clave pública manualmente

    Si no tiene acceso SSH basado en contraseña a su servidor, tendrá que completar el proceso anterior manualmente.

    Agregaremos manualmente el contenido de su id_rsa.pubarchivo al ~/.ssh/authorized_keysarchivo en su máquina remota.

    Para mostrar el contenido de su id_rsa.pubclave, escriba esto en su computadora local:

    1. cat ~/.ssh/id_rsa.pub

    Verá el contenido de la clave, que debería verse así:

    Outputssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDgkLJ8d2gGEJCN7xdyVaDqk8qgeZqQ0MlfoPK3TzWI5dkG0WiZ16jrkiW/h6lhO9K1w89VDMnmNN9ULOWHrZMNs//Qyv/oN+FLIgK2CkKXRxTmbh/ZGnqOm3Zo2eU+QAmjb8hSsstQ3DiuGu8tbiWmsa3k3jKbWNWpXqY3Q88t+bM1DZrHwYzaIZ1BSA1ghqHCvIZqeP9IUL2l2DUfSCT9LXJEgMQhgjakJnzEGPgd5VHMR32rVrbIbbDzlyyoZ7SpCe5y0vYvbV2JKWI/8SEOmwehEHJ9RBZmciwc+1sdEcAJVMDujb9p5rX4hyvFpG0KGhZesB+/s7PdOa8zlIg4TZhXUHl4t1jpPC83Y9KEwS/Ni4dhaxlnr3T6l5hUX2cD+eWl1vVpogBqKNGBMrVR4dWs3Z4BVUf9exqTRRYOfgo0UckULqW5pmLW07JUuGo1kpFAxpDBPFWoPsg08CGRdEUS7ScRnMK1KdcH54kUZr0O88SZOsv9Zily/A5GyNM= demo@test

    Acceda a su host remoto utilizando cualquier método que tenga disponible.

    Una vez que tenga acceso a su cuenta en el servidor remoto, debe asegurarse de que el ~/.sshdirectorio exista. Este comando creará el directorio si es necesario o no hará nada si ya existe:

    1. mkdir -p ~/.ssh

    Ahora, puedes crear o modificar el authorized_keysarchivo dentro de este directorio. Puedes agregar el contenido de tu id_rsa.pubarchivo al final del authorized_keysarchivo, creándolo si es necesario, usando este comando:

    1. echo public_key_string ~/.ssh/authorized_keys

    En el comando anterior, sustituya el public_key_stringcon el resultado del cat ~/.ssh/id_rsa.pubcomando que ejecutó en su sistema local. Debe comenzar con ssh-rsa AAAA....

    Por último, nos aseguraremos de que el ~/.sshdirectorio y authorized_keysel archivo tengan los permisos adecuados establecidos:

    1. chmod -R go= ~/.ssh

    Esto elimina de forma recursiva todos los permisos de “grupo” y “otros” para el ~/.ssh/directorio.

    Si está utilizando la rootcuenta para configurar claves para una cuenta de usuario, también es importante que el ~/.sshdirectorio pertenezca al usuario y no a root:

    1. chown -R sammy:sammy ~/.ssh

    En este tutorial nuestro usuario se llamaSammypero debes sustituir el nombre de usuario apropiado en el comando anterior.

    Ahora puede intentar la autenticación sin contraseña con su servidor Debian.

    Paso 3: Autenticación en el servidor Debian mediante claves SSH

    Si ha completado con éxito uno de los procedimientos anteriores, debería poder iniciar sesión en el host remoto sin la contraseña de la cuenta remota.

    El proceso general es el mismo:

    1. ssh username@remote_host

    Si es la primera vez que se conecta a este host (si utilizó el último método mencionado anteriormente), es posible que vea algo como esto:

    OutputThe authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.Are you sure you want to continue connecting (yes/no)? yes

    Esto significa que su computadora local no reconoce el host remoto. Escriba “sí” y luego presione ENTERpara continuar.

    Si no proporcionó una contraseña para su clave privada, iniciará sesión inmediatamente. Si proporcionó una contraseña para la clave privada cuando creó la clave, se le solicitará que la ingrese ahora (tenga en cuenta que las teclas que presione no se mostrarán en la sesión de terminal por razones de seguridad). Después de la autenticación, se le debería abrir una nueva sesión de shell con la cuenta configurada en el servidor Debian.

    Si la autenticación basada en clave fue exitosa, continúe para aprender cómo proteger aún más su sistema deshabilitando la autenticación con contraseña.

    Paso 4: Desactivar la autenticación de contraseña en su servidor

    Si pudo iniciar sesión en su cuenta mediante SSH sin contraseña, ha configurado correctamente la autenticación basada en clave SSH para su cuenta. Sin embargo, su mecanismo de autenticación basado en contraseña sigue activo, lo que significa que su servidor sigue expuesto a ataques de fuerza bruta.

    Antes de completar los pasos de esta sección, asegúrese de que tiene configurada la autenticación basada en clave SSH para la cuenta raíz en este servidor o, preferiblemente, de que tiene configurada la autenticación basada en clave SSH para una cuenta que no sea raíz en este servidor con sudoprivilegios. Este paso bloqueará los inicios de sesión basados ​​en contraseña, por lo que es fundamental asegurarse de que podrá seguir teniendo acceso administrativo.

    Una vez que hayas confirmado que tu cuenta remota tiene privilegios administrativos, inicia sesión en tu servidor remoto con claves SSH, ya sea como root o con una cuenta con sudoprivilegios. Luego, abre el archivo de configuración del demonio SSH:

    1. sudo nano /etc/ssh/sshd_config

    Dentro del archivo, busque una directiva llamada PasswordAuthentication. Puede que esté comentada. Quite el comentario de la línea y establezca el valor en “no”. Esto deshabilitará su capacidad de iniciar sesión a través de SSH usando contraseñas de cuenta:

    /etc/ssh/sshd_config

    ...PasswordAuthentication no...

    Guarde y cierre el archivo cuando haya terminado presionando CTRL+ X, luego Ypara confirmar que se guardó el archivo y, finalmente, ENTERpara salir de nano. Para implementar estos cambios, debemos reiniciar el sshdservicio:

    1. sudo systemctl restart ssh

    Como precaución, abra una nueva ventana de terminal y pruebe que el servicio SSH esté funcionando correctamente antes de cerrar esta sesión:

    1. ssh username@remote_host

    Una vez que haya verificado su servicio SSH, puede cerrar de forma segura todas las sesiones actuales del servidor.

    El demonio SSH de su servidor Debian ahora solo responde a claves SSH. La autenticación basada en contraseña se ha deshabilitado correctamente.

    Conclusión

    Ahora debería tener la autenticación basada en clave SSH configurada en su servidor, lo que le permitirá iniciar sesión sin proporcionar una contraseña de cuenta.

    Si desea obtener más información sobre cómo trabajar con SSH, consulte nuestra Guía de conceptos básicos de SSH .

    SUSCRÍBETE A NUESTRO BOLETÍN 
    No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Subir

    Este sitio web utiliza cookies para mejorar tu experiencia mientras navegas por él. Este sitio web utiliza cookies para mejorar tu experiencia de usuario. Al continuar navegando, aceptas su uso. Mas informacion