Ssh o shell seguro es un protocolo cifrado útil para asegurar conexiones entre el cliente y el servidor para diferentes tareas administrativas. Admite varios tipos de sistemas de autenticación. La autenticación pública basada en la llave y la autenticación basada en contraseñas se utilizan principalmente. La autenticación basada en claves es más segura que la autenticación basada en contraseñas. Los pares de claves de autenticación para el SSH son generados por la herramienta SSH-KeyGen que puede usarse para diferentes propósitos, como autenticar el host, automatizar el inicio de sesión, etc. Cómo se puede usar esta herramienta en Ubuntu se ha mostrado en este tutorial.
Sintaxis:
La sintaxis de este comando ha dado a continuación. Admite muchas opciones para generar pares de claves de autenticación que se han descrito más adelante.
ssh-keygen [-q] [-b bits] [-c comment] [-f output_keyfile] [-m formato]
[-t DSA | ECDSA | ECDSA-SK | ED25519 | ED25519-SK | RSA]
[-N new_passphrase] [-o opción] [-w proveedor]
Diferentes opciones de ssh-keygen:
Los propósitos de usar diferentes tipos de opciones de ssh-keygen se explican a continuación.
Opción | Objetivo |
---|---|
-A | Genera las teclas de host con la ruta de archivo de tecla predeterminada, la frase de pases vacía, los bits predeterminados para el tipo de tecla y el comentario. |
-B bits | Se usa para definir el número de bits en la clave que se creará. |
-Com | Se usa para definir el nuevo comentario. |
-C | Se utiliza para solicitar cambiar el comentario de los archivos de clave pública y privada. |
-E hingerprint_hash | Se usa para definir el algoritmo hash que se usará para mostrar las huellas digitales. |
-mi | Se utiliza para leer el archivo de clave privada o pública e imprimir en el stdout. |
-F Nombre de host | [nombre de host]: puerto | Se utiliza para buscar el nombre de host en particular con el número de puerto opcional en el archivo Know_hosts. |
-F Nombre de archivo | Se usa para definir el nombre de archivo del archivo de clave. |
-H | Se usa para hash un archivo conocido_hosts. Reemplazará todos los nombres y direcciones de host con las representaciones de hashed dentro del archivo especificado. El contenido original se moverá a un archivo con el .viejo sufijo. |
-i | Se utiliza para leer un archivo de clave privado (o público) sin cifrar. |
-L | Se usa para imprimir el contenido de uno o más certificados. |
-l | Se utiliza para mostrar la huella digital de un archivo de clave pública especificada. |
-N new_passphrase | Se usa para proporcionar la nueva frase de pases. |
-P -frase | Se usa para proporcionar la vieja frase de pases. |
-T DSA | ECDSA | ECDSA-SK | ED25519 | ED25519-SK | RSA | Se usa para definir el tipo de clave que se creará. |
Crear claves usando ssh-keygen:
Puede crear pares de claves SSH ejecutando ssh-keygen con opciones o sin ninguna opción. Diferentes formas de crear los pares de claves SSH se han mostrado en esta parte de este tutorial. Debe iniciar sesión en la máquina del servidor donde OpenSSH ha instalado para crear las teclas
Genere los pares de claves sin ninguna opción:
El siguiente comando creará pares de claves sin usar ninguna opción.
$ ssh-keygen
Después de ejecutar el comando anterior, puede proporcionar el nombre de archivo donde se guardará la tecla o presione la tecla ENTER para guardar el nombre de archivo predeterminado. Aquí, la tecla ENTER se ha presionado. A continuación, puede presionar la tecla ENTER nuevamente para configurar la contraseña vacía o establecer la contraseña.
Genere los pares de claves con una sola opción:
El siguiente comando generará los pares de clave del tipo RSA mencionado en el comando con la opción -t.
$ ssh -keygen -t rsa
Al igual que el comando anterior, puede proporcionar el nombre de archivo o usar el nombre de archivo predeterminado para almacenar los pares de claves y establecer la contraseña o la contraseña vacía para la conexión SSH.
Genere los pares de claves con múltiples opciones:
Ejecute el siguiente comando para generar los pares clave del tipo RSA con 2000 bits y el valor de comentarios, "[email protected]".
$ ssh -keygen -t rsa -b 2000 -c "Mailto: [email protected] "> [email protected]"
Al igual que el comando anterior, puede proporcionar el nombre de archivo o usar el nombre de archivo predeterminado para almacenar los pares de claves y establecer la contraseña o la contraseña vacía para la conexión SSH. Si generó los archivos de clave antes de ejecutar el comando anterior, entonces le pedirá que sobrescriba el archivo de clave o no. Si escribe 'Y', sobrescribirá el archivo generado previamente con las nuevas claves.
Copie la clave pública al servidor:
Ejecute el siguiente comando desde la máquina del servidor para agregar la clave pública a la máquina del servidor. El comando copiará la clave al servidor y la configurará para agregar la clave al archivo autorizado_keys para acceder al servidor.
$ ssh-copy-id -i ~/.ssh/id_rsa fahmida@fahmida-virtualbox
La siguiente salida aparecerá si la clave pública no se agregó antes en la máquina del servidor.
Modificar el archivo de configuración del servidor:
Debe habilitar algunas opciones en el archivo de configuración de la máquina del servidor si desea establecer la autenticación basada en contraseña y permitir el inicio de sesión del usuario root del servidor. La ruta del archivo de configuración SSH del servidor es/etc/ssh/sshd_config. Abra el archivo en cualquier editor de texto. Ejecute el siguiente comando para editar el archivo en el editor nano.
$ sudo nano/etc/ssh/sshd_config
Agregue o modifique el archivo con las siguientes líneas para habilitar la autenticación basada en contraseña y establecer permiso para el inicio de sesión del usuario root.
Contraseña Autenticación Sí
Permitrootlogin si
Guarde y cierre el archivo. Ejecute el siguiente comando para reiniciar el servicio SSH.
$ sudo systemctl reiniciar ssh
Iniciar sesión desde el cliente SSH:
Inicie sesión en la máquina del cliente desde donde desea conectarse con el servidor para verificar si la conexión SSH está funcionando. Abra el terminal y ejecute el siguiente comando para agregar la identidad de la máquina del servidor.
$ ssh-add
Ejecute el siguiente comando SSH para conectarse con la máquina del servidor desde la máquina del cliente. La autenticación de contraseña y el inicio de sesión raíz se han habilitado en el archivo de configuración SSH del servidor en la parte anterior de este tutorial. Por lo tanto, el usuario debe proporcionar la contraseña de root válida de la máquina del servidor para establecer una conexión SSH correctamente.
$ ssh [email protected]
Aparecerá la siguiente salida similar después de establecer una conexión SSH al servidor desde el cliente.
Conclusión:
El SSH-KeyGen usa para generar un par de claves SSH de diferentes maneras se han explicado en este tutorial. Espero que el usuario de Ubuntu genere las claves SSH utilizando ssh-keygen para establecer una conexión SSH después de leer este tutorial.