pssh (Administrer un parc de machines)
Posté : sam. 11 juil. 2026 17:34
Sauvegarde, suite à un effacement accidentel, du tuto créé par cyrille
Installer parallel-ssh
Attention , les commandes sont données sans sudo, vérifier le prompt :
Configurer les postes clients
Tâches à réaliser sur chaque client. Ecrire un script d'automatisation afin d'alléger cette tâche.
Installer le paquet openssh-server
Chaque client possédera donc son propre serveur ssh.
configurer openssh-server
Configurer le serveur ssh pour qu'il accepte les connexions root et les autorisations par clefs et non mot de passe
Mettre à jour les lignes suivantes avec ces entrées
Démarrer le service ssh ou le redémarrer
Les clients sont prêts à l'emploi
Configuration de la machine maître
Installer pssh
pssh / parallel-ssh
Sous debian sid, l'utiliaire pssh s'appelle parallel-ssh (sous d'autres distributions c'est simplement pssh).
Ici nous utiliserons parallel-ssh par défaut (adapter à votre configuration)
Utiliser une paire de clef publique/privée pour l’identification ssh
Construire sa clef , sauf si on en a déjà une (compte $USER, non en root)
La clé est créée, on la garde sous le coude 
Le fichier de configuration du poste maître
Ce fichier renferme la liste des hosts vers lesquels les commandes seront envoyées.
Ici, cette liste sera stockée dans /etc/ssh/pssh_host mais vous pouvez créer un fichier de ce type où vous le souhaitez (souvent, le fichier ~/.pssh_hosts_files est utilisé)
Créer un fichier contenant les hosts
...
Si vous souhaitez utiliser les noms des machines plutôt que leurs adresses IP, il faudra modifier et adapter le fichier /etc/hosts
Exporter la clef publique sur les clients
Autant de fois que d'entrées dans votre fichier /etc/ssh/pssh_host/pssh
Déployer pssh
Initialiser pssh
Utilisez ssh-agent pour vous authentifier automatiquement (avec un nom de shell comme argument pour que les variables d'environnement de l'agent soient définies dans ce nouveau shell). Ajoutez la clé avec ssh-add et tapez votre mot de passe une seule fois.
Utiliser parallel-ssh
Exemple, option -i
On remarque ici l'option -i qui permet de visualiser ce que retourne le terminal ssh des postes clients
Exemple, option -o
Pour rediriger la sortie ssh des clients vers un fichier, on utilisera l'option -o
Et pour visualiser les sorties.
Exemple, mise à jour à distance
Copier des fichiers vers les clients
Syntaxe
Exemple
Tuer des processus sur les postes clients
Syntaxe
Exemple
Merci de vérfier si ce how-to est à jour : https://cbiot.fr/dokuwiki/doku.php?id=pssh
Installer parallel-ssh
Attention , les commandes sont données sans sudo, vérifier le prompt :
- si # , nécessite un sudo
- si $ , commande en user
- Envoi de données à tous les clients
- Saisie unique d'un mot de passe pour ssh
- Enregistrement de la sortie dans des fichiers ou visionnage direct
- Automatisation des tâches sysadmin telles que l'application de correctifs aux serveurs, les mises à jour, l'installation de paquets, la configuration,…
- Envoi de fichiers à tous les serveurs
- Gestion des processus
- Compatible avec tous les Linux, Unix et freeBSD
Configurer les postes clients
Tâches à réaliser sur chaque client. Ecrire un script d'automatisation afin d'alléger cette tâche.
Installer le paquet openssh-server
Code : Tout sélectionner
# aptitude install openssh-serverconfigurer openssh-server
Configurer le serveur ssh pour qu'il accepte les connexions root et les autorisations par clefs et non mot de passe
Code : Tout sélectionner
# nano /etc/ssh/sshd_configCode : Tout sélectionner
PermitRootLogin yes
PubkeyAuthentication yesCode : Tout sélectionner
# service ssh start
# service ssh restartConfiguration de la machine maître
Installer pssh
Code : Tout sélectionner
# aptitude install psshSous debian sid, l'utiliaire pssh s'appelle parallel-ssh (sous d'autres distributions c'est simplement pssh).
Ici nous utiliserons parallel-ssh par défaut (adapter à votre configuration)
Utiliser une paire de clef publique/privée pour l’identification ssh
Construire sa clef , sauf si on en a déjà une (compte $USER, non en root)
Code : Tout sélectionner
$ ssh-keygenCode : Tout sélectionner
$ ls -l .ssh/
total 12
-rw------- 1 ragnarok cyrille 1876 juin 26 2019 id_rsa
-rw-r--r-- 1 ragnarok cyrille 397 juin 26 2019 id_rsa.pub
-rw-r--r-- 1 ragnarok cyrille 2220 mars 14 16:42 known_hostsLe fichier de configuration du poste maître
Ce fichier renferme la liste des hosts vers lesquels les commandes seront envoyées.
Ici, cette liste sera stockée dans /etc/ssh/pssh_host mais vous pouvez créer un fichier de ce type où vous le souhaitez (souvent, le fichier ~/.pssh_hosts_files est utilisé)
Créer un fichier contenant les hosts
Code : Tout sélectionner
mkdir /etc/ssh/pssh_host
nano /etc/ssh/pssh_host/pssh
###Mettre les adresses IP des serveurs à administrer ici.
root@192.168.0.11
root@192.168.0.12
root@192.168.0.23
root@192.168.0.43Si vous souhaitez utiliser les noms des machines plutôt que leurs adresses IP, il faudra modifier et adapter le fichier /etc/hosts
Exporter la clef publique sur les clients
Code : Tout sélectionner
ssh-copy-id root@192.168.0.11
ssh-copy-id root@192.168.0.12
ssh-copy-id root@192.168.0.23
ssh-copy-id root@192.168.0.43
...Code : Tout sélectionner
$ ssh-copy-id root@192.168.0.43
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/ragnarok/.ssh/id_rsa.pub"
The authenticity of host '192.168.0.43 (192.168.0.43)' can't be established.
ECDSA key fingerprint is SHA256:2SC8wDSd7m7UrqCRnmz6jsY+6K9GL9zkMPQZGxEQM6k.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.0.43's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@192.168.0.43'"
and check to make sure that only the key(s) you wanted were added.Initialiser pssh
Utilisez ssh-agent pour vous authentifier automatiquement (avec un nom de shell comme argument pour que les variables d'environnement de l'agent soient définies dans ce nouveau shell). Ajoutez la clé avec ssh-add et tapez votre mot de passe une seule fois.
Code : Tout sélectionner
$ ssh-agent bash
$ ssh-add
Enter passphrase for /xxxx/.ssh/identity:Exemple, option -i
Code : Tout sélectionner
$ parallel-ssh -i -h /etc/ssh/pssh_host/pssh_hosts uname -a
[1] 15:21:04 [SUCCESS] root@192.168.0.11
FreeBSD asgard-freeBSD 12.0-RELEASE-p13 FreeBSD 12.0-RELEASE-p13 GENERIC amd64
[2] 15:21:04 [SUCCESS] root@192.168.0.43
Linux Tinuviel-debianStable 4.19.0-6-amd64 #1 SMP Debian 4.19.67-2+deb10u2 (2019-11-11) x86_64 GNU/Linux
Exemple, option -o
Pour rediriger la sortie ssh des clients vers un fichier, on utilisera l'option -o
Code : Tout sélectionner
$ parallel-ssh -o /tmp/uname -h /etc/ssh/pssh_host/pssh_hosts uname -a
[1] 15:22:47 [SUCCESS] root@192.168.0.11
[2] 15:22:48 [SUCCESS] root@192.168.0.43Code : Tout sélectionner
$ cat /tmp/uname/root@192.168.0.11 /tmp/uname/root@192.168.0.43
FreeBSD asgard-freeBSD 12.0-RELEASE-p13 FreeBSD 12.0-RELEASE-p13 GENERIC amd64
Linux Tinuviel-debianStable 4.19.0-6-amd64 #1 SMP Debian 4.19.67-2+deb10u2 (2019-11-11) x86_64 GNU/LinuxCode : Tout sélectionner
$ parallel-ssh -i -h /etc/ssh/pssh_host/pssh_hosts apt-get update
$ parallel-ssh -i -h /etc/ssh/pssh_host/pssh_hosts apt-get upgradeSyntaxe
Code : Tout sélectionner
$ parallel-scp -h /fichier_de_conf_pssh source destinatireCode : Tout sélectionner
$ parallel-scp -h /etc/ssh/pssh_host/pssh_hosts $HOME/test.txt /tmp/Syntaxe
Code : Tout sélectionner
$ parallel-nuke -h /fichier_de_conf_pssh nom_du_processusCode : Tout sélectionner
$ parallel-nuke -h /etc/ssh/pssh_host/pssh_hosts nginxMerci de vérfier si ce how-to est à jour : https://cbiot.fr/dokuwiki/doku.php?id=pssh