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 OpenSSHDans 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.