GNU/Linux >> Tutoriels Linux >  >> Linux

Commande sshpass :authentification par mot de passe non interactive avec SSH

Aperçu

Les administrateurs du système Linux se connectent normalement aux serveurs Linux en fournissant un mot de passe ou en utilisant une authentification basée sur une clé. sshpass est un outil qui nous permet de fournir automatiquement des mots de passe à l'invite de commande afin que les scripts automatisés puissent être exécutés comme souhaité par les utilisateurs. sshpass fournit un mot de passe à l'invite ssh à l'aide d'un tty dédié, faisant croire à ssh qu'un utilisateur interactif fournit un mot de passe.

Certaines des utilisations courantes de sshpass

1. effectuer des sauvegardes sur un serveur distant
2. exécuter des commandes sur des systèmes à une heure spécifiée.

Installation de sshpass

1. Distributions basées sur Centos :

Configurez le référentiel EPEL à partir de https://fedoraproject.org/wiki/EPEL, puis en tant que root, exécutez :

# yum -y install sshpass

2. Distributions basées sur Ubuntu/Debain :

En tant que root, exécutez :

# apt-get install sshpass

3. Compilez et installez à partir de la source :

# wget http://sourceforge.net/projects/sshpass/files/latest/download -O sshpass.tar.gz
# tar -zxvf sshpass.tar.gz 
# cd sshpass-1.05/ 
# ./configure 
# make 
# make install
# which sshpass
/usr/local/bin/sshpass

Obtenir de l'aide

# sshpass -h
Usage: sshpass [-f|-d|-p|-e] [-hV] command parameters

-f filename   Take password to use from file
-d number     Use number as file descriptor for getting password
-p password   Provide password as argument (security unwise)
-e            Password is passed as env-var "SSHPASS" With no parameters – password will be taken from stdin
-h            Show help (this screen)
-V            Print version information

Au plus l'un des -f, -d, -p ou -e doit être utilisé

Exemple 1 :fournir un mot de passe avec ssh

# sshpass -p 'password' ssh ldap.thegeekdiary.com -l root -o StrictHostKeyChecking=no

Où :

mot de passe est le mot de passe de votre serveur (ldap.thegeekdiary.com). 'StrictHostKeyChecking=non ' est utilisé pour contrôler les connexions aux machines dont la clé d'hôte n'est pas connue ou a changé.

EXEMPLE :2 POUR EXÉCUTER UNE COMMANDE SUR LE SERVEUR À DISTANCE VIZ VÉRIFIER LE TEMPS DE DISPONIBILITÉ ET UNNAME

Exemple 2 :Pour exécuter une commande sur le serveur distant

Essayons d'exécuter 2 commandes "uptime" et "uname" sur le serveur distant à l'aide de la commande sshpass :

# sshpass -p 'password' ssh ldap.thegeekdiary.com -l root -o StrictHostKeyChecking=no "uptime;uname -a"

Exemple de sortie :

18:49:34 up 21 days, 18:49,  3 users,  load average: 0.01, 0.00, 0.00
Linux ldap.thegeekdiary.com 2.6.32-220.el6.x86_64 #1 SMP Tue Dec 6 19:48:22 GMT 2011 x86_64 x86_64 x86_64 GNU/Linux

Exemple 3 :copier un fichier à l'aide de rsync sur un serveur

Dans notre cas, nous copions un fichier sshpass.tar.gz sur un serveur distant ldap.thegeekdiary.com

# sshpass -p 'password' rsync -av --progress sshpass.tar.gz [email protected]:/tmp/

Sortie de la commande ci-dessus :

sending incremental file list
sshpass.tar.gz
98362 100% 62.56MB/s 0:00:00 (xfer#1, to-check=0/1)
sent 98472 bytes received 31 bytes 197006.00 bytes/sec
total size is 98362 speedup is 1.00
root@server1:/home/thegeekdiary#

Exemple 4 :boucle for pour copier sur des serveurs distants

Créez un fichier comme suit :

# touch /tmp/scr

Le fichier doit contenir le nom des hôtes :

server2.thegeekdiary.com
server3.thegeekdiary.com
server4.thegeekdiary.com
server5.thegeekdiary.com
# for i in `cat /tmp/scr`; do echo " ";echo "###$i####"; sshpass -p 'password' rsync -av --progress sshpass.tar.gz root@$i:/tmp/; done

Sortie de la commande ci-dessus :

###server2.thegeekdiary.com####
sending incremental file list
sent 54 bytes received 12 bytes 132.00 bytes/sec
total size is 98362 speedup is 1490.33

###server3.thegeekdiary.com####
sending incremental file list
sent 54 bytes received 12 bytes 44.00 bytes/sec
total size is 98362 speedup is 1490.33

###server4.thegeekdiary.com####
sending incremental file list
sent 54 bytes received 12 bytes 132.00 bytes/sec
total size is 98362 speedup is 1490.33

###server5.thegeekdiary.com####
sending incremental file list
sent 54 bytes received 12 bytes 132.00 bytes/sec
total size is 98362 speedup is 1490.33


Linux
  1. Automatisation du mot de passe SSH sous Linux avec sshpass

  2. Ssh - Vous obtenez toujours une invite de mot de passe avec Ssh avec authentification par clé publique ?

  3. Comment désactiver la connexion SSH avec un mot de passe

  4. Comment définir le mot de passe des fichiers Zip avec la commande dans tous les systèmes d'exploitation ?

  5. Envoi d'un mot de passe via SSH ou SCP avec subprocess.Popen

Test de mot de passe SSH avec Hydra sur Kali Linux

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

Commande SSH

Désactiver l'authentification par mot de passe SSH pour un utilisateur ou un groupe spécifique

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

Comment configurer l'authentification par mot de passe avec Apache sur Ubuntu 18.04