Cifrado 101: Cómo usar SSH con clave privada en Debian Linux (Guía paso a paso)

By Amanda D | Last Upload on Feb 2nd 2023 | Home TutorialesCifrado 101: Cómo usar SSH con claves privadas

Introducción a la encriptación privada

El cifrado ya no es patrimonio exclusivo de los expertos en seguridad de la información.

La creciente comprensión de que la pérdida de datos personales tiene un valor real y un impacto real ha hecho que la responsabilidad de su protección pase a un primer plano.

Casi todas las empresas necesitan tener una estrategia de protección de datos.

Esto incluye proteger la información sensible dentro de las aplicaciones empresariales, mantenerla a salvo cuando se almacena y asegurarse de que está protegida cuando se envía por Internet y a la nube. Recuerda que puedes usar Putty para SSH de forma segura en Windows.

blank

Y no sólo las empresas deben preocuparse por la protección de datos. Todos tenemos la responsabilidad de proteger los datos personales de los demás. Esto incluye proteger la información que almacenamos en nuestros ordenadores, en nuestros teléfonos inteligentes y en la nube. Y también se extiende a la forma en que enviamos información a través de Internet, ya sea por correo electrónico o utilizando aplicaciones que sincronizan datos entre dispositivos.

La buena noticia es que hay varias formas de proteger los datos. El método más común y eficaz es cifrarlos.

Cómo conectarse a través de SSH utilizando un archivo .pem al servidor

Utilice la opción -i:

ssh -i mykey.pem user@mydomain.example

Como se indica en esta respuesta de desbordamiento de pila, este archivo debe tener los permisos correctos.

El manual de SSH dice:

SSH will simply ignore a private key file if it is accessible by others.

Puedes cambiar los permisos con este comando:

chmod go= mykey.pem

Eso es establecer permisos para grupos y otros iguales a la lista vacía de permisos.

Necesitas tu clave pública SSH y necesitarás tu clave privada. Las claves pueden ser generadas con ssh-keygen. La clave privada debe guardarse en el Servidor 1 y la pública en el Servidor 2.

Sus claves son una forma de proteger los datos sensibles. En la actualidad, muchos dispositivos y aplicaciones disponen de cifrado para facilitar a las personas la protección de sus datos. La seguridad informática está mejorando porque la criptografía (una forma de proteger los datos) es cada vez más común.

Esto está completamente descrito en la página man de OpenSSH por lo que citaré gran parte de ella. Deberías leer la sección ‘Autenticación’. También, el manual de openSSH debería ser realmente útil: http://www.openssh.org/manual.html

Por favor, ten cuidado con ssh porque afecta a la seguridad de tu servidor.

De man ssh:

 ~/.ssh/identity
 ~/.ssh/id_dsa
 ~/.ssh/id_rsa
     Contains the private key for authentication.  These files contain
     sensitive data and should be readable by the user but not acces-
     sible by others (read/write/execute).  ssh will simply ignore a
     private key file if it is accessible by others.  It is possible
     to specify a passphrase when generating the key which will be
     used to encrypt the sensitive part of this file using 3DES.

 ~/.ssh/identity.pub
 ~/.ssh/id_dsa.pub
 ~/.ssh/id_rsa.pub
     Contains the public key for authentication.  These files are not
     sensitive and can (but need not) be readable by anyone.

Esto significa que puedes almacenar en él tu clave privada en tu directorio personal. Otra posibilidad es decirle a ssh mediante el parámetro -i que utilice un archivo de identidad especial. También de man ssh:

 -i identity_file
     Selects a file from which the identity (private key) for RSA or
     DSA authentication is read.  The default is ~/.ssh/identity for
     protocol version 1, and ~/.ssh/id_rsa and ~/.ssh/id_dsa for pro-
     tocol version 2.  Identity files may also be specified on a per-
     host basis in the configuration file.  It is possible to have
     multiple -i options (and multiple identities specified in config-
     uration files).

Esto es para la clave privada. Ahora necesitas introducir tu clave pública en el Servidor 2. De nuevo una cita de man ssh:

  ~/.ssh/authorized_keys
         Lists the public keys (RSA/DSA) that can be used for logging in
         as this user.  The format of this file is described in the
         sshd(8) manual page.  This file is not highly sensitive, but the
         recommended permissions are read/write for the user, and not
         accessible by others.

La forma más fácil de conseguirlo es copiar el archivo al Servidor 2 y añadirlo al archivo authorized_keys:

scp -p your_pub_key.pub user@host:
ssh user@host
host$ cat id_dsa.pub >> ~/.ssh/authorized_keys

La autorización vía clave pública debe estar permitida para el demonio ssh, ver man ssh_config. Normalmente, esto se puede hacer añadiendo la siguiente declaración al archivo config:

PubkeyAuthentication yes

Autentificación.

Esta guía le guiará a través de la creación e inicio de conexiones utilizando claves públicas/privadas. El uso de la autenticación de clave pública elimina la necesidad de introducir una contraseña cada vez que necesite conectarse a un host SSH remoto.

Paso 1: Instalar OpenSSH

Para crear claves públicas y privadas, necesitamos instalar el paquete OpenSSH. Utilice el gestor de paquetes predeterminado.

Para Debian/Ubuntu:

$ sudo apt-get install OpenSSH-client -y

Para Arch/Manjaro:

En una distribución basada en Arch, utilice el comando:

$ sudo pacman -S openssh

En REHL o CentOS:

$ sudo yum install openssh-client

Paso 2: Generar claves SSH

Con los paquetes OpenSSH instalados, podemos crear pares de claves públicas/privadas para autenticar las conexiones SSH. Para generar un nuevo par de claves en tu máquina Linux, utiliza el comando ssh-keygen. Este comando sobrescribirá tu antiguo par de claves y aprovisionará uno nuevo.

Puede utilizar el siguiente comando para generar una nueva clave

$ ssh-keygen -t rsa -b 4096

El comando le pedirá un nombre de archivo. Por defecto, los pares de claves ssh se almacenan como id_rsa e id_rsa.pub para clave privada y clave pública, respectivamente.

$ Enter file in which to save the key (/home/ubuntu/.ssh/id_rsa):

Para utilizar el nombre de archivo predeterminado, pulse ENTER y continúe.

En la siguiente parte, introduzca una frase de contraseña para asegurar sus pares de claves. Puede omitir esto pulsando ENTER.

$ Enter passphrase (empty for no passphrase):
$ Enter same passphrase again:

Ejecutando esto completará la creación de su par de claves SSH, y podrá utilizarlo para iniciar sesión en SSH.

blank

Paso 3: Copiar la clave pública al host remoto

Podemos utilizar nuestro par de claves SSH para gestionar servidores remotos copiando la clave pública al servidor. OpenSSH nos proporciona un comando para hacer esto, llamado ssh-copy-id.

Usa el comando:

$ ssh-copy-id remote_user@remote_ip

El comando le pedirá que introduzca la contraseña SSH. Una vez autenticado, el comando añade la clave pública al archivo ~/.ssh/authorized_keys.

blank

Paso 4: SSH utilizando su clave privada

Una vez completado el proceso, deberá iniciar sesión en el servidor remoto utilizando una clave privada SSH. Esto significa que no se le pedirá una contraseña.

Utilice el comando como:

$ ssh remote_user@remote_ip
blank

Y con eso, usted ha utilizado con éxito la autenticación basada en claves SSH. Puedes añadir una capa extra de seguridad deshabilitando los inicios de sesión con contraseña.

Gestión de claves SSH públicas

El cifrado puede proporcionar una gran seguridad a su empresa, pero es esencial gestionarlo correctamente. Si te equivocas con el cifrado, ya sea desde el punto de vista tecnológico o de gestión, puedes acabar con datos codificados que no sirven para nada. Sería como tener una destructora de documentos de empresa que no funciona. Los problemas con el cifrado suelen deberse a una gestión de claves deficiente. SSH usa claves de encriptación para proteger los datos en tránsito, y estas claves de encriptación deben ser administradas cuidadosamente para mantener la seguridad. En esta guía, discutiremos algunas de las mejores prácticas para la administración de claves con SSH.

Gestión de claves SSH privadas

Uno de los aspectos más importantes de la gestión de claves es asegurarse de que sólo los usuarios autorizados tienen acceso a los problemas de encriptación, que suelen deberse a una gestión de claves deficiente. SSH utiliza claves de encriptación para proteger los datos en tránsito, y estas claves de encriptación deben ser administradas cuidadosamente para mantener la seguridad. En esta guía, discutiremos algunas de las mejores prácticas para la gestión de claves con SSH.

El equipo tutorial de Techbooks ha pasado por el proceso de generar pares de claves SSH y mover las claves a otras máquinas. Puede autenticar sesiones SSH sin contraseña utilizando las técnicas descritas anteriormente. Un único par de claves puede utilizarse para gestionar muchos servidores a la vez, siempre que todos tengan la misma huella digital.