Configuración de inicio de sesión SSH sin contraseña para múltiples servidores remotos usando script

Configuración de inicio de sesión SSH sin contraseña para múltiples servidores remotos usando script

La autenticación basada en la 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 ventaja importante del inicio de sesión sin contraseña de SSH, y mucho menos la seguridad es que permite la automatización de varios tipos de procesos de servicio cruzado.

Lectura relacionada: Cómo asegurar y endurecer el servidor OpenSsh

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

Crear una nueva tecla SSH en Linux

Primero, genere el par de teclas SSH (la clave privada/de identidad que un cliente SSH usa para autenticarse al iniciar sesión en un servidor SSH remoto y la clave pública almacenada como una clave autorizada en un sistema remoto que ejecuta un servidor SSH) utilizando el ssh-keygen Comando de la siguiente manera:

# ssh-keygen 
Generar la tecla SSH en Linux

Cree un script de shell para inicios de sesión remotos de Mulitple

A continuación, cree un script de shell que ayude a copiar una clave pública para múltiples hosts remotos de Linux.

# vim ~/.copia de bin/ssh.mierda 

Copie y pegue el siguiente código en el archivo (reemplace las siguientes variables en consecuencia NOMBRE DE USUARIO - el nombre de usuario para conectarse con, 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 NOMBRE DE USUARIO= "raíz" Host_file= "/root/hosts" Error_file= "/tmp/ssh-copy_error.txt "public_key_file =" $ 1 "si [ ! -f $ public_key_file]; luego echo "archivo '$ public_key_file' no encontrado!"Salir 1 FI si [ ! -f $ host_file]; luego echo "archivo '$ host_file' no encontrado!"Salir 2 fi para IP en 'Cat $ host_file'; do ssh-copy-id -i $ public_key_file [correo electrónico protegido] $ ip 2> $ error_file resultado = $? if [$ resultado -eq 0]; Luego se eco "" echo "clave pública copiada con éxito a $ ip" echo "" else eco "$ (cat $ error_file)" echo salida 3 fi eco "" hecho 

Guarde el archivo y cierre.

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

# chmod +x ssh-copy.mierda 

Ahora corre el copia ssh.mierda Script y especifique su archivo de clave pública como el primer argumento como se muestra en la captura de pantalla:

# ./copia ssh.sh /root /.ssh/pro-rsa.pub 
Ejecutar el script de copia ssh

A continuación, usa agente ssh Para administrar sus claves, que contiene su clave privada descifrada en la memoria y la usa para autenticar los inicios de sesión. Después de comenzar el agente ssh, Agregue su clave privada de la siguiente manera:

# eval "$ (ssh-agent -s)" # ssh-add ~/.ssh/pro_rsa 
Iniciar agente SSH

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

Ahora puede iniciar sesión en cualquiera de sus hosts remotos sin proporcionar una contraseña para la autenticación de usuarios de SSH. De esta manera, puede automatizar procesos de servidor cruzado.

# ssh [correo electrónico protegido] 
SSH inicio de sesión sin contraseña

Eso es todo lo que tuvimos para ti! Si tiene alguna contribución para hacer particularmente para mejorar el script de shell, háganos saber a través del formulario de comentarios a continuación.