SSH sin password entre 2 servidores

Cómo conectarnos desde un servidor Linux origen hacia un servidor Linux destino sin password.



Si necesitamos que un servidor Linux se conecte a otro (o a otro dispositivo con SSH) de forma automática - siguiendo un script, por ejemplo - y no queremos que el servidor destino nos pida password en cada conexión, podemos evitarlo usando un par de claves pública/privada, donde dejamos la parte privada de la clave en el servidor origen e insertamos la parte pública en el servidor destino.

El paquete SSH tiene comandos específicos built-in para facilitarnos esta tarea: ssh-keygen y ssh-copy-id.


En origen



Para crear el par de claves usaremos el comando ssh-keygen en el servidor origen:

HOST# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:56AtFXvBmudpHBDlOfatLM4PSTioipo8gMjdUC4jULZ root@HOST The key's randomart image is: +---[RSA 2048]----+ | .. ... | | .. . + . | | E. o o B | | . + . . B + . | |+ + = . S = . . | |+. o . B X + . | |. + + O o | |.+ . . + o | |=.o.. o.. | +----[SHA256]-----+

Esto nos generará dos archivos en la home del usuario:

- id_rsa: parte privada de la clave.
- id_rsa.pub: parte pública de la clave.

Ahora, copiamos la parte pública de la clave hacia el servidor destino con el comando ssh-copy-id.

En esta primera conexión, se nos pedirá el password del usuario ya que establecemos una conexión SSH inicial para copiar la clave publica:

HOST# ssh-copy-id usuario@destino /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys Password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'usuario@destino'" and check to make sure that only the key(s) you wanted were added.

A partir de este momento, si ejecutamos ssh usuario@destino en origen, podremos conectar a la máquina destino sin tener que introducir el password del usuario con el que nos conectamos:

HOST# ssh usuario@destino Last login: Mon Jun 8 18:19:54 2020 from origen usuario@destino:~> exit logout Connection to destino closed.

Recordar que no se nos pedirá password al conectarnos desde el usuario X en origen hasta el usuario Y en destino. Si queremos conectarnos desde otro usuario en origen o hacia otro usuario en destino, deberemos volver a generar el par de claves con el usuario que queramos usar en origen y copiar la clave pública hacia la carpeta home del usuario al que nos queremos conectar en destino.

Si no queremos usar un password en la primera conexión, podemos copiar la clave pública manualmente al servidor de destino en vez de usar ssh-copy-id.


En destino (método manual)



Para copiar la clave pública de forma manual:

1. Creamos una carpeta llamada ".ssh" en la carpeta "home" del usuario.
(la carpeta home la podemos sacar de /etc/passwd).
2. Hacemos un chmod a 700 de la carpeta ".ssh".
3. Creamos un archivo llamado "authorized_keys" dentro de la carpeta ".ssh".
4. Hacemos un chmod 600 del archivo "authorized_keys".
5. Copiamos en su interior el contenido de la clave pública (id_rsa.pub) del servidor origen.

Post a Comment

Mới hơn Cũ hơn