¿Cómo generar una clave SSH con ssh-keygen en Linux?

Secure Shell (SSH) es un protocolo de red criptográfico utilizado para operar servicios remotos de forma segura. Se utiliza para la operación remota de dispositivos en canales seguros utilizando una arquitectura cliente-servidor que generalmente opera en el puerto 22. SSH es el sucesor de Telnet. SSH utiliza claves públicas y privadas para validar y autenticar a los usuarios. ssh-keygen se utiliza para generar estos pares de claves.

Puede obtener más información sobre SSH y Telnet aquí

¿Cómo funciona SSH?

  • El protocolo SSH debe tener 2 pares. Una clave pública y una clave privada
  • La clave pública se agrega al servidor (o) dispositivo remoto en una carpeta especial $HOME/.ssh/authorized_keys.
  • Cuando el servidor envía cualquier respuesta encriptada usando la clave pública, como solo el cliente tiene la clave privada, solo puede desencriptar la respuesta.
  • Después de una autenticación exitosa, se crea una sesión de shell o se ejecuta el comando solicitado en el servidor remoto.

Cómo funciona SSH

SSH-KEYGEN

ssh-keygen es la utilidad utilizada para generar, administrar y convertir claves de autenticación para SSH. ssh-keygen viene instalado con SSH en la mayoría de los sistemas operativos. ssh-keygen puede generar una clave utilizando uno de los tres algoritmos de firma digital diferentes.

  • RSA
  • DSA
  • ECDSA

Archivos generados por ssh-keygen

  • $HOME/.ssh/identity: Archivo que contiene la clave privada RSA cuando se usa el protocolo SSH versión 1.
  • $HOME/.ssh/identity.pub: archivo que contiene la clave pública RSA para la autenticación cuando se utiliza la versión del protocolo SSH
  • $HOME/.ssh/id_dsa: Archivo que contiene la identidad de autenticación DSA de la versión 2 del protocolo del usuario.
  • $HOME/.ssh/id_dsa.pub: Archivo que contiene la clave pública DSA para la autenticación cuando se utiliza la versión del protocolo SSH.
  • $HOME/.ssh/id_rsa: Archivo que contiene la identidad de autenticación RSA versión 2 del protocolo del usuario. Este archivo no debe ser legible por nadie más que por el usuario.
  • $HOME/.ssh/id_rsa.pub: Archivo que contiene la clave pública RSA de la versión 2 del protocolo para la autenticación.

Los archivos “.pub” deben copiarse en el archivo $HOME/.ssh/authorized_keys del sistema remoto donde un usuario desea iniciar sesión mediante la autenticación SSH.

Generando pares de claves usando ssh-keygen

Casi todas las Distros de Unix y Linux vienen preinstaladas con SSH y ssh-keygen, por lo que no tendremos necesidad de instalarlas. Empezaremos directamente. Este proceso es casi similar a casi todas las distribuciones de Linux.

Abre tu terminal y escribe ssh-keygen

ssh-keygen

Solicita los nombres de los pares de claves ssh. Si desea ingresar la frase de contraseña, continúe y ssh-keygen creará automáticamente sus claves.

//Output

Generating public/private rsa key pair.

// enter the name for ssh key pairs
Enter file in which to save the key (/home/kushwanth/.ssh/id_rsa): gfg

// enter passpharse for security
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 

// ssh keys generated
Your identification has been saved in gfg
Your public key has been saved in gfg.pub

generación de clave ssh creada

Una clave pública se parece a la siguiente.

Ejemplo de clave pública

Esta es la clave que necesita copiar en su dispositivo remoto para obtener una autenticación SSH exitosa.

Copia de clave pública al servidor remoto

Después de crear el par de claves, ahora necesitamos copiar la clave pública en el servidor. Hay 2 formas de hacer esto, usando ssh-copy-id (o) copiándolo manualmente en el servidor.

Usando ssh-copy-id

Utilice el comando ssh-copy-id para copiar su archivo de clave pública (por ejemplo, $HOME/.ssh/id_rsa.pub) a su cuenta de usuario en el servidor remoto.

ssh-copy-id -i $HOME/.ssh/id_rsa.pub <usuario>@<su-host-remoto>

Copiar manualmente la clave pública

Inicie sesión en su servidor remoto usando la contraseña y cree un directorio en $HOME/.ssh. Puede usar el siguiente comando.

ssh <usuario>@<su-host-remoto> “umask 077; prueba -d .ssh || mkdir .ssh”

  • ssh <usuario>@<host> le permite iniciar sesión en su servidor host remoto
  • Si el directorio .ssh ya está presente, establecerá los permisos del directorio en 077 para que permita el permiso de lectura, escritura y ejecución para el propietario del archivo, pero prohíbe el permiso de lectura, escritura y ejecución para todos los demás.
  • Si el directorio no está presente, creará uno nuevo.

Ahora envíe su clave pública al servidor remoto,

gato $HOME/.ssh/id_rsa.pub | ssh <usuario>@<su-host-remoto> “cat >> .ssh/authorized_keys”

  • cat le permite imprimir el contenido del archivo en la terminal.
  • La salida del gato se canaliza a SSH para agregar la clave pública a un servidor remoto.

Ahora puede cerrar sesión y probar si puede conectarse al servidor remoto utilizando el protocolo SSH.

Publicación traducida automáticamente

Artículo escrito por kushwanthreddy y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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