Generar llaves SSH entre hosts

Publicado en: Tecnología

Hace mucho tiempo ya expliqué como hacerlo entre dos Macs, primero con una visión genérica de SSH y después con el tema más concreto de ‘SCP, automatizar las copias de archivos‘. Y nada cambia, es un procedimiento idéntico para cualquier Unix y distribución Linux.

En este caso lo reescribo para tenerlo en cuenta con sistema CentOS y el SELinux, que debes reconfigurar si quieres usarlo. Para el ejemplo utilizaré 2 hosts, Host A y Host B como indica la imagen:

Esquema Hosts SSH

Siendo el Host A nuestra propia máquina, un cliente que se va a conectar vía SSH al equipo remoto, denominado aquí Host B, un servidor o máquina a la que te conectas.

1. Generar la llave pública id_dsa.pub, si no está creada, en el Host A. Si ya la tenemos, pasamos al punto 2.

HostA:/ usuario$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (~/.ssh/id_dsa): (pulsar enter)
Enter passphrase (empty for no passphrase): (pulsar enter)
Enter same passphrase again: (pulsar enter)
Your identification has been saved in ~/.ssh/id_dsa.
Your public key has been saved in ~/.ssh/id_dsa.pub.
HostA:/ usuario $

 

2. Crear, si no existe, el directorio .ssh en el Host B

HostB:/ root$ mkdir ~/.ssh

 

Ajustar permisos al directorio:

HostB:/ root$ chmod 700 .ssh

 

3. Copiar la llave pública desde el Host A al B

HostA:/ usuario$ scp ~/.ssh/id_dsa.pub
root@<ip_equipo_remoto>:~/.ssh/public-key.tmp

 

4. Añadir la llave pública a las autorizaciones del Host B.

HostB:/ root$ cat ~/.ssh/public-key.tmp >> ~/.ssh/authorized_keys

Con esto ya tenemos generada la confianza entre ambos hosts vía SSH. Si usamos un sistema CentOS o cualquier otro con el sistema de seguridad SELinux, debemos hacer lo siguiente:

 

5. Resetear la configuración de SELinux en el Host remoto, servidor. En CentOS es necesario corregir las opciones de seguridad del directorio .ssh en SELinux:

HostB:/ root$ restorecon -Rv ~/.ssh

 

SaludoX