¿Cómo intercambiar la clave SSH para la autenticación sin contraseña entre servidores Linux?

Implementar autenticación basada en clave SSH en Linux

SSH (Secured Shell) es un protocolo que crea una conexión criptográficamente segura entre el cliente SSH y los servidores remotos.

Con SSH puede gestionar y administrar servidores remotos de forma segura. Esto puede ser útil de muchas maneras.

  • Despliegue multiservidor
  • Detener/iniciar servicios de forma remota
  • Automatización

y toda tu creatividad (ojalá)…

Como administrador de sistemas, esto es algo básico que debe saber.

Aprendamos cómo…

Voy a generar una clave privada y una clave pública. La clave privada debe almacenarse en su máquina cliente ssh y debe mantenerse segura. La clave pública debe copiarse en el servidor remoto para iniciar sesión en ese servidor desde la máquina cliente SSH sin necesidad de contraseña.

Aprenderá lo siguiente.

  • Instale SSH (no es necesario si ya está instalado)
  • Generar claves SSH
  • Copie la clave SSH a un servidor remoto
  • Inicie sesión en el servidor remoto usando SSH

Para fines de demostración, tengo 2 servidores con las siguientes direcciones IP, un sistema es un cliente y el otro es un servidor en el que iniciaré sesión a través de ssh desde una máquina cliente.

  • Cliente (usuario -> geekflare): 192.168.56.102
  • Remoto (usuario -> ubuntu): 192.168.56.101

Instalación de SSH

Antes de seguir los pasos mencionados en este artículo, asegúrese de openssh-server está instalado en los servidores. Si no está instalado, ejecute los siguientes comandos para instalarlo.

sudo apt-get install openssh-server

sudo systemctl enable ssh

sudo systemctl start ssh

Puede ejecutar el comando ssh para verificar si está instalado en el sistema o no.

[email protected]:~$ ssh

usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface]

           [-b bind_address] [-c cipher_spec] [-D [bind_address:]port]

           [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11]

           [-i identity_file] [-J [[email protected]]host[:port]] [-L address]

           [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]

           [-Q query_option] [-R address] [-S ctl_path] [-W host:port]

           [-w local_tun[:remote_tun]] destination [command]

Generar claves SSH

Esto debe hacerse en un servidor cliente.

ejecutar el ssh-keygen comando para generar una clave SSH. Simplemente presione enter cuando solicite el archivo, la frase de contraseña, la misma frase de contraseña. Genera un par de claves en el directorio ~/.ssh por defecto. Id_rsa es la clave privada e id_rsa.pub es la clave pública asociada.

[email protected]:~$ ssh-keygen

Generating public/private rsa key pair.

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

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /home/geekflare/.ssh/id_rsa.

Your public key has been saved in /home/geekflare/.ssh/id_rsa.pub.

The key fingerprint is:

SHA256:3XDm62tzJegGm8oAmFYCyeFZovJOuU42zNgyn9GzH30 [email protected]

The key's randomart image is:

+---[RSA 2048]----+

|o+..             |

|+o+              |

|oo. .     . o    |

|.. *     . *     |

|  B .   S . o.   |

| O o . .  . ... .|

|+ @ o o . E=.  o |

| B + o + .o.= .  |

|  + ... o. oo+   |

+----[SHA256]-----+

Generará dos nuevos archivos en ~/.ssh directorio.

Copie la clave SSH al servidor remoto

La clave privada debe ser copiada ~/.ssh carpeta en un servidor remoto. La mayoría de los servidores ya deberían tener esta carpeta; de lo contrario, debe crear una carpeta.

Y, para hacerlo:

  • Inicie sesión en el servidor remoto con el usuario al que le gustaría conectarse. En mi caso, es ubuntu
  • Asegúrese de que el directorio de trabajo actual sea el directorio de inicio del usuario y luego cree una carpeta .ssh. También puede usar el siguiente comando único para crear uno
mkdir -p ~/.ssh

Si ya tiene la carpeta .ssh, haga una copia de seguridad de la misma.

A continuación, insertemos la clave pública desde un servidor cliente.

En la máquina cliente (192.168.56.102), ejecute el siguiente comando para copiar la clave pública en el servidor remoto dentro de un authorized_keys archivo en el directorio .ssh.

[email protected]:~$ cat .ssh/id_rsa.pub | ssh [email protected] 'cat >> .ssh/authorized_keys'

[email protected]'s password:

Ejecute el siguiente comando para establecer permisos en el archivo authorized_keys en el servidor remoto.

[email protected]:~$ ssh [email protected] "chmod 700 .ssh; chmod 640 .ssh/authorized_keys"

Genial, esto concluye que la clave se intercambió y el permiso está listo.

Inicie sesión en el servidor remoto mediante SSH

¡Probemos para ver si funciona!

Iniciemos sesión en el servidor remoto (192.168.56.101) desde una máquina cliente (192.168.56.102) como usuario geekflare.

Ejecute el siguiente comando para probar, esta vez no le pedirá la contraseña.

[email protected]:~$ ssh [email protected]

Welcome to Ubuntu 16.04.6 LTS (GNU/Linux 4.4.0-151-generic i686)

 * Documentation:  https://help.ubuntu.com

 * Management:     https://landscape.canonical.com

 * Support:        https://ubuntu.com/advantage

346 packages can be updated.

11 updates are security updates.

Last login: Mon Jun 17 00:10:32 2019 from 192.168.56.101

Aquí tienes…

He iniciado sesión en el servidor remoto con éxito. Ejecutar el siguiente comando dará los detalles de IP de la máquina remota.

[email protected]:~$ ifconfig

enp0s3    Link encap:Ethernet  HWaddr 08:00:27:9b:47:86 

          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0

          inet6 addr: fe80::5c62:3267:b752:fe5d/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:20239 errors:0 dropped:0 overruns:0 frame:0

          TX packets:5406 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:22678039 (22.6 MB)  TX bytes:701710 (701.7 KB)

enp0s8    Link encap:Ethernet  HWaddr 08:00:27:a9:4a:6b 

          inet addr:192.168.56.101  Bcast:192.168.56.255  Mask:255.255.255.0

          inet6 addr: fe80::54a9:761c:9034:21a2/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:330 errors:0 dropped:0 overruns:0 frame:0

          TX packets:197 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:42847 (42.8 KB)  TX bytes:32774 (32.7 KB)

lo        Link encap:Local Loopback 

          inet addr:127.0.0.1  Mask:255.0.0.0

          inet6 addr: ::1/128 Scope:Host

          UP LOOPBACK RUNNING  MTU:65536  Metric:1

          RX packets:997 errors:0 dropped:0 overruns:0 frame:0

          TX packets:997 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1

          RX bytes:79654 (79.6 KB)  TX bytes:79654 (79.6 KB)

Conclusión

Configurar el intercambio de claves SSH es muy sencillo, como puede ver. Espero que esto te ayude y estés interesado en aprender la administración y solución de problemas de Linux, entonces echa un vistazo a esto Curso de Udemy.

Deja un comentario