GNU/Linux >> Tutoriels Linux >  >> Linux

Automatisation du mot de passe SSH sous Linux avec sshpass

[Note de l'éditeur, 29 novembre 2021 :tous les exemples de fourniture d'un mot de passe sur la ligne de commande incluent le risque que le mot de passe soit capturé dans l'historique du shell de l'utilisateur (si pris en charge) ou visible par tous les utilisateurs du système dans la liste des processus. Les experts en sécurité recommandent de supprimer tous les fichiers et d'effacer les journaux du shell.]

La connexion et le transfert de fichiers vers des systèmes distants sont des tâches que les administrateurs système font tout le temps. SSH est un outil essentiel utilisé par de nombreux administrateurs système sur les plates-formes Linux. SSH prend en charge deux formes d'authentification :

  1. Authentification par mot de passe
  2. Authentification par clé publique

L'authentification par clé publique est considérée comme la forme la plus sécurisée de ces deux méthodes, bien que l'authentification par mot de passe soit la plus populaire et la plus simple. Cependant, avec l'authentification par mot de passe, l'utilisateur est toujours invité à entrer le mot de passe. Cette répétition est fastidieuse. De plus, SSH nécessite également une intervention manuelle lorsqu'il est utilisé dans un script shell. Si l'automatisation est nécessaire lors de l'utilisation de l'authentification par mot de passe SSH, un outil simple appelé sshpass est indispensable.

Qu'est-ce que sshpass ?

Le sshpass L'utilitaire est conçu pour exécuter SSH à l'aide de keyboard-interactive mode d'authentification par mot de passe, mais de manière non interactive.

SSH utilise un accès direct TTY pour s'assurer que le mot de passe est bien émis par un utilisateur de clavier interactif. sshpass exécute SSH dans un TTY dédié, faisant croire à SSH qu'il obtient le mot de passe d'un utilisateur interactif.

Installer sshpass

Vous pouvez installer sshpass avec cette simple commande :

# yum install sshpass

Utiliser sshpass

Spécifiez la commande que vous souhaitez exécuter après le sshpass options. Typiquement, la commande est ssh avec des arguments, mais il peut aussi s'agir de n'importe quelle autre commande. L'invite de mot de passe SSH est cependant actuellement codée en dur dans sshpass .

Le synopsis pour le sshpass commande est décrite ci-dessous :

sshpass [-ffilename|-dnum|-ppassword|-e] [options] command arguments

Où :

-ppassword
    The password is given on the command line. 
-ffilename
    The password is the first line of the file filename. 
-dnumber
    number is a file descriptor inherited by sshpass from the runner. The password is read from the open file descriptor. 
-e
    The password is taken from the environment variable "SSHPASS".

Exemples

Pour mieux comprendre la valeur et l'utilisation de sshpass , examinons quelques exemples avec plusieurs utilitaires différents, notamment SSH, Rsync, Scp et GPG.

Exemple 1 :SSH

Utilisez sshpass pour vous connecter à un serveur distant à l'aide de SSH. Supposons que le mot de passe est !4u2tryhack . Vous trouverez ci-dessous plusieurs façons d'utiliser les options sshpass.

A. Utilisez le -p (ceci est considéré comme le choix le moins sûr et ne doit pas être utilisé) :

$ sshpass -p !4u2tryhack ssh [email protected]

Le -p l'option ressemble à ceci lorsqu'elle est utilisée dans un script shell :

$ sshpass -p !4u2tryhack ssh -o StrictHostKeyChecking=no [email protected]

B. Utilisez le -f option (le mot de passe doit être la première ligne du nom de fichier):

$ echo '!4u2tryhack' >pass_file
$ chmod 0400 pass_file
$ sshpass -f pass_file ssh [email protected]

Le $ chmod 0400 pass_file est essentiel pour garantir la sécurité du fichier de mots de passe. L'umask par défaut sur RHEL est 033, ce qui permettrait une lisibilité mondiale du fichier.

Voici le -f option lorsqu'elle est utilisée dans un script shell :

$ sshpass -f pass_file ssh -o StrictHostKeyChecking=no [email protected]

C. Utilisez le -e option (le mot de passe doit être la première ligne du nom de fichier):

$ SSHPASS='!4u2tryhack' sshpass -e ssh [email protected]

Le -e l'option lorsqu'elle est utilisée dans un script shell ressemble à ceci :

$ SSHPASS='!4u2tryhack' sshpass -e ssh -o StrictHostKeyChecking=no [email protected]

Exemple 2 :Rsync

Utilisez sshpass avec rsync :

$ SSHPASS='!4u2tryhack' rsync --rsh="sshpass -e ssh -l username" /custom/ host.example.com:/opt/custom/ 

Ce qui précède utilise le -e option, qui transmet le mot de passe à la variable d'environnement SSHPASS

Nous pouvons utiliser le -f changer comme ceci :

$ rsync --rsh="sshpass -f pass_file ssh -l username" /custom/ host.example.com:/opt/custom/

Exemple 3 :Scp

Utilisez sshpass avec scp:

$ scp -r /var/www/html/example.com --rsh="sshpass -f pass_file ssh -l user" host.example.com:/var/www/html

Exemple 4 :GPG

Vous pouvez également utiliser sshpass avec un fichier crypté GPG. Lorsque le -f switch est utilisé, le fichier de référence est en clair. Voyons comment chiffrer un fichier avec GPG et l'utiliser.

Commencez par créer un fichier comme suit :

$ echo '!4u2tryhack' > .sshpasswd

Ensuite, cryptez le fichier en utilisant le gpg commande :

$ gpg -c .sshpasswd

Supprimez le fichier qui contient le texte en clair :

$ rm .sshpasswd

Enfin, utilisez-le comme suit :

$ gpg -d -q .sshpasswd.gpg | sshpass ssh [email protected]

Récapitulez

sshpass est un outil simple qui peut être d'une grande aide pour les administrateurs système. Cela ne remplace en aucun cas la forme d'authentification SSH la plus sécurisée, qui est l'authentification par clé publique. Cependant, sshpass peut également être ajouté à la boîte à outils sysadmin.

[ Cours en ligne gratuit :Présentation technique de Red Hat Enterprise Linux. ]


Linux
  1. SSHPass :comment se connecter en SSH à un serveur à l'aide d'un script sans mot de passe (de manière non interactive)

  2. Connexion Ssh avec un mot de passe en texte clair comme paramètre ? ?

  3. Comment autoriser ssh avec des mots de passe vides sous Linux

  4. Comment configurer Rsync sans mot de passe avec SSH sous UNIX / Linux ?

  5. Comment vérifier le mot de passe avec Linux?

Test de mot de passe SSH avec Hydra sur Kali Linux

Comment désactiver l'authentification par mot de passe SSH sur Linux VPS

Commandes SSH sous Linux avec exemples d'utilisation

Trouver des comptes d'utilisateurs avec un mot de passe vide sous Linux

Comment transmettre un mot de passe à la commande SSH sous Linux

Comment protéger GRUB avec un mot de passe sous Linux ?