GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Configure el inicio de sesión SSH sin contraseña para varios servidores remotos mediante script

La autenticación basada en clave SSH (también conocida como autenticación de clave pública) permite la autenticación sin contraseña y es una solución mucho mejor y más segura que la autenticación con contraseña. Una de las principales ventajas del inicio de sesión sin contraseña SSH, por no hablar de la seguridad, es que permite la automatización de varios tipos de procesos entre servidores.

Lectura relacionada :Cómo asegurar y fortalecer el servidor OpenSSH

En este artículo, demostraremos cómo crear un par de claves SSH y copiar la clave pública en varios hosts remotos de Linux a la vez, con un script de shell.

Crear una nueva clave SSH en Linux

En primer lugar, genere el par de claves SSH (la clave privada/de identidad que utiliza un cliente SSH para autenticarse cuando inicia sesión en un servidor SSH remoto y la clave pública almacenada como clave autorizada en un sistema remoto que ejecuta un servidor SSH) utilizando el comando ssh-keygen comando de la siguiente manera:

# ssh-keygen

Cree un script de shell para múltiples inicios de sesión remotos

A continuación, cree un script de shell que le ayudará a copiar una clave pública en varios hosts remotos de Linux.

# vim ~/.bin/ssh-copy.sh

Copie y pegue el siguiente código en el archivo (reemplace las siguientes variables según corresponda USER_NAME – el nombre de usuario con el que conectarse, HOST_FILE – un archivo que contiene la lista de nombres de host o direcciones IP, y ERROR_FILE – un archivo para almacenar cualquier error de comando ssh).

#!/bin/bash
USER_NAME="root"
HOST_FILE="/root/hosts"
ERROR_FILE="/tmp/ssh-copy_error.txt"
PUBLIC_KEY_FILE="$1"

if [ ! -f  $PUBLIC_KEY_FILE ]; then
        echo "File '$PUBLIC_KEY_FILE' not found!"
        exit 1
fi

if [ ! -f $HOST_FILE ]; then
        echo "File '$HOST_FILE' not found!"
        exit 2
fi

for IP in `cat $HOST_FILE`; do
        ssh-copy-id -i $PUBLIC_KEY_FILE [email protected]$IP 2>$ERROR_FILE
        RESULT=$?
        if [ $RESULT -eq 0 ]; then
                echo ""
                echo "Public key successfully copied to $IP"
                echo ""
        else
                echo "$(cat  $ERROR_FILE)"
                echo 
                exit 3
        fi
        echo ""
done

Guarde el archivo y ciérrelo.

Luego haga que el script sea ejecutable con chmod comando como se muestra.

# chmod +x ssh-copy.sh

Ahora ejecute ssh-copy.sh script y especifique su archivo de clave pública como primer argumento, como se muestra en la captura de pantalla:

# ./ssh-copy.sh /root/.ssh/prod-rsa.pub

Luego, use ssh-agent para administrar sus claves, que guarda su clave privada descifrada en la memoria y la usa para autenticar los inicios de sesión. Después de iniciar ssh-agent , agregue su clave privada de la siguiente manera:

# eval "$(ssh-agent -s)"
# ssh-add  ~/.ssh/prod_rsa

Iniciar sesión en el servidor Linux remoto sin contraseña

Ahora puede iniciar sesión en cualquiera de sus hosts remotos sin proporcionar una contraseña para la autenticación de usuario SSH. De esta forma, puede automatizar los procesos entre servidores.

# ssh [email protected]

¡Eso es todo lo que teníamos para ti! Si tiene alguna contribución que hacer en particular para mejorar el script de shell, háganoslo saber a través del formulario de comentarios a continuación.


Ubuntu
  1. Cómo configurar el inicio de sesión SSH sin contraseña

  2. SSH sin contraseña usando pares de claves públicas y privadas

  3. Cómo configurar el inicio de sesión SSH sin contraseña en Linux

  4. Cómo configurar claves SSH para SSH "clave pública/privada" Iniciar sesión en Linux

  5. Uso de la misma clave privada SSH en varias máquinas

¿Cómo configurar el inicio de sesión SSH sin contraseña usando ssh-keygen?

Cómo configurar el inicio de sesión sin contraseña SSH en Rocky Linux

Cómo configurar el inicio de sesión sin contraseña SSH en AlmaLinux

¿Cómo configurar la autenticación basada en clave Ssh para Github usando el archivo ~/.ssh/config?

Inicio de sesión SSH sin contraseña en 3 pasos simples

Genere claves SSH para iniciar sesión sin contraseña en Ubuntu