GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Configurer la connexion SSH sans mot de passe pour plusieurs serveurs distants à l'aide d'un script

L'authentification basée sur la clé SSH (également connue sous le nom d'authentification par clé publique) permet une authentification sans mot de passe et constitue une solution plus sécurisée et bien meilleure que l'authentification par mot de passe. L'un des principaux avantages de la connexion SSH sans mot de passe, sans parler de la sécurité, est qu'elle permet l'automatisation de divers types de processus inter-serveurs.

Lire connexe :Comment sécuriser et renforcer le serveur OpenSSH

Dans cet article, nous allons montrer comment créer une paire de clés SSH et copier la clé publique sur plusieurs hôtes Linux distants à la fois, avec un script shell.

Créer une nouvelle clé SSH sous Linux

Tout d'abord, générez la paire de clés SSH (la clé privée/d'identité qu'un client SSH utilise pour s'authentifier lorsqu'il se connecte à un serveur SSH distant et la clé publique stockée en tant que clé autorisée sur un système distant exécutant un serveur SSH) en utilisant le ssh-keygen commande comme suit :

# ssh-keygen

Créer un script shell pour plusieurs connexions à distance

Ensuite, créez un script shell qui vous aidera à copier une clé publique sur plusieurs hôtes Linux distants.

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

Copiez et collez le code suivant dans le fichier (remplacez les variables suivantes en conséquence USER_NAME – le nom d'utilisateur avec lequel se connecter, HOST_FILE – un fichier qui contient la liste des noms d'hôtes ou adresses IP, et ERROR_FILE – un fichier pour stocker les éventuelles erreurs de commande 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

Enregistrez le fichier et fermez-le.

Rendez ensuite le script exécutable avec le chmod commande comme indiqué.

# chmod +x ssh-copy.sh

Exécutez maintenant le ssh-copy.sh script et spécifiez votre fichier de clé publique comme premier argument, comme indiqué dans la capture d'écran :

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

Ensuite, utilisez ssh-agent pour gérer vos clés, qui conserve votre clé privée décryptée en mémoire et l'utilise pour authentifier les connexions. Après avoir démarré le ssh-agent , ajoutez-y votre clé privée comme suit :

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

Se connecter au serveur Linux distant sans mot de passe

Vous pouvez désormais vous connecter à n'importe lequel de vos hôtes distants sans fournir de mot de passe pour l'authentification des utilisateurs SSH. De cette façon, vous pouvez automatiser les processus inter-serveurs.

# ssh [email protected]

C'est tout ce que nous avions pour vous ! Si vous avez des contributions à apporter en particulier à l'amélioration du script shell, faites-le nous savoir via le formulaire de commentaires ci-dessous.


Ubuntu
  1. Comment configurer la connexion SSH sans mot de passe

  2. Un script BASH simple pour la post-installation du serveur Ubuntu

  3. Comment configurer une connexion SSH sans mot de passe sous Linux

  4. Comment configurer les clés SSH pour une connexion ssh "sans mot de passe" sous Linux

  5. Comment configurer les clés SSH pour une connexion SSH « sans mot de passe » sur CentOS/RHEL

Comment configurer une connexion SSH sans mot de passe à l'aide de ssh-keygen ?

Comment configurer la connexion sans mot de passe SSH dans Rocky Linux

Comment configurer la connexion SSH sans mot de passe dans AlmaLinux

Comment configurer l'authentification basée sur la clé Ssh pour Github en utilisant le fichier ~/.ssh/config ?

Connexion SSH sans mot de passe en 3 étapes simples

Générer des clés SSH pour une connexion sans mot de passe dans Ubuntu