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

Configurar 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 más segura y mucho mejor que la autenticación de contraseña. Una de las principales ventajas del inicio de sesión sin contraseña SSH, y mucho menos de la seguridad, es que permite la automatización de varios tipos de procesos entre servidores.

Lectura relacionada. Cómo proteger 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

Primero, 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. de la siguiente manera:

# ssh-keygen Generar clave SSH en Linux  Generar clave SSH en Linux Generar clave SSH en Linux

Crear 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 “si [!-f $ ARCHIVO_ CLAVE_PÚBLICA]; luego repita “Archivo ‘$ PUBLIC_KEY_FILE’ no encontrado!” salida 1 fi si [!-f $ HOST_FILE]; luego repita “¡Archivo ‘$ HOST_FILE’ no encontrado!” salida 2 fi para IP en `cat $ HOST_FILE`; do ssh-copy-id-i $ PUBLIC_KEY_FILE [email protected] $ IP 2> $ ERROR_FILE RESULT = $? if [$ RESULT-eq 0]; luego echo “” echo “La clave pública se copió correctamente en $ IP” echo “” si no echo “$ (cat $ ERROR_FILE)” echo exit 3 fi echo “” done

Guarde el archivo y ciérrelo.

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

# chmod + x ssh-copy.sh

Ahora ejecute el script ssh-copy.sh 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  Ejecutar SSH Copiar script  Ejecutar SSH Copy Script Ejecutar SSH Copy Script

A continuación, use ssh-agent para administrar sus claves, que guarda su clave privada descifrada en la memoria y la usa para autenticar 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 SSH Agent  Iniciar SSH Agent Inicie SSH Agent

Inicie 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 SSH autenticacion de usuario. De esta forma, puede automatizar los procesos entre servidores.

# ssh [correo electrónico protegido]  SSH Passwordless Login  SSH Passwordless Login SSH Passwordless Iniciar sesión

¡Eso es todo lo que tenemos 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.