Geekflare cuenta con el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliados comprando enlaces en este sitio.
Comparte en:

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

intercambio de claves ssh
Escáner de seguridad de aplicaciones web Invicti – la única solución que ofrece verificación automática de vulnerabilidades con Proof-Based Scanning™.

Implementar la autenticación basada en claves SSH en Linux

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

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

  • Implementación de varios servidores
  • Detener / iniciar servicios de forma remota
  • Automatización

y toda tu creatividad (con suerte) ...

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

Aprendamos cómo ...

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

Installing 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 instalar.

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.

geekflare@geekflare:~$ 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 [user@]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]

Generate SSH Keys

Esto debe realizarse en un servidor cliente.

Ejecute 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.

geekflare@geekflare:~$ 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 geekflare@geekflare

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 archivos nuevos en ~/.ssh directorio.

Copy SSH Key to Remote Server

La clave privada debe copiarse ~/.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 utilizar el siguiente comando único para crear uno
mkdir -p ~/.ssh

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

A continuación, empujemos 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.

geekflare@geekflare:~$ cat .ssh/id_rsa.pub | ssh ubuntu@192.168.56.101 'cat >> .ssh/authorized_keys'

ubuntu@192.168.56.101's password:

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

geekflare@geekflare:~$ ssh ubuntu@192.168.56.101 "chmod 700 .ssh; chmod 640 .ssh/authorized_keys"

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

Login to Remote Server using 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 de geekflare.

Ejecute el comando a continuación para probar, no le pedirá contraseña esta vez.

geekflare@geekflare:~$ ssh ubuntu@192.168.56.101

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

Aqui tienes…

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

ubuntu@ubuntu:~$ 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 le ayude y esté interesado en aprender administración y resolución de problemas de Linux, luego consulte esto Curso Udemy.

Gracias a nuestros patrocinadores
Más lecturas excelentes sobre Linux
Impulse su negocio
Algunas de las herramientas y servicios para ayudar a que su negocio crezca.
  • Invicti utiliza Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en cuestión de horas.
    Prueba Invicti
  • Web scraping, proxy residencial, administrador de proxy, desbloqueador web, rastreador de motores de búsqueda y todo lo que necesita para recopilar datos web.
    Prueba Brightdata
  • Semrush es una solución de marketing digital todo en uno con más de 50 herramientas en SEO, redes sociales y marketing de contenido.
    Prueba Semrush
  • Intruder es un escáner de vulnerabilidades en línea que encuentra debilidades de ciberseguridad en su infraestructura, para evitar costosas filtraciones de datos.
    Intente Intruder