Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| pssh [Le 17/03/2020, 19:37] – ajout de tags moths-art | pssh [Le 23/03/2020, 06:45] (Version actuelle) – Modif tag Fabux | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | {{tag> | ||
| + | ---- | ||
| + | ====== PSSH (parallel-ssh) ====== | ||
| + | | ||
| + | **Pssh** est un outil en ligne de commande pour exécuter des commandes unix via **ssh** en parallèle sur plusieurs hôtes. Ses spécialités comprennent: | ||
| + | * Envoi de données à tous les clients | ||
| + | * | ||
| + | * | ||
| + | * | ||
| + | * Envoi de fichiers à tous les serveurs | ||
| + | * Gestion des processus | ||
| + | * Compatible avec tous les Linux, Unix et freeBSD | ||
| + | Ce logiciel est très utile sur un parc de PC, puisque vous mettez à jour l' | ||
| + | |||
| + | ====== Configurer les postes clients ====== | ||
| + | <note tip>Il est possible d' | ||
| + | Sur chaque postes clients il s' | ||
| + | |||
| + | * [[: | ||
| + | * Configurer ces serveurs ssh pour qu'il accepte les connexions root et les autorisations par clefs et non mot de passe : | ||
| + | * avec les [[: | ||
| + | PermitRootLogin yes | ||
| + | PubkeyAuthentication yes</ | ||
| + | * Démarrer ou redémarrer le [[: | ||
| + | * Par exemple <code bash> | ||
| + | |||
| + | Les clients sont prêts à l' | ||
| + | |||
| + | ====== Configuration de la machine maître ====== | ||
| + | ===== Installer pssh ===== | ||
| + | |||
| + | [[: | ||
| + | |||
| + | ===== pssh / parallel-ssh ===== | ||
| + | |||
| + | Sous debian sid, l' | ||
| + | |||
| + | Ici nous utiliserons **parallel-ssh** par défaut (adapter à votre configuration) | ||
| + | |||
| + | ===== Utiliser une paire de clef publique/ | ||
| + | |||
| + | Construire sa clef , sauf si on en a déjà une (compte $USER, non en root) | ||
| + | <code bash> | ||
| + | Vérifiez par <code bash>ls -l .ssh/ </ | ||
| + | qui doit vous retourner | ||
| + | < | ||
| + | total 12 | ||
| + | -rw------- 1 ragnarok cyrille 1876 juin 26 2019 id_rsa | ||
| + | -rw-r--r-- 1 ragnarok cyrille | ||
| + | -rw-r--r-- 1 ragnarok cyrille 2220 mars 14 16:42 known_hosts</ | ||
| + | |||
| + | 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 **/ | ||
| + | |||
| + | Créer un fichier contenant les hosts | ||
| + | <code bash> | ||
| + | Modifiez le ensuite. Par exemple avec [[:nano]] si vous êtes sur une [[: | ||
| + | < | ||
| + | <file bash> | ||
| + | ###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.43 | ||
| + | ...</ | ||
| + | |||
| + | Si vous souhaitez utiliser les noms des machines plutôt que leurs adresses IP, il faudra modifier et adapter le fichier **/ | ||
| + | |||
| + | ===== Exporter la clef publique sur les clients ===== | ||
| + | |||
| + | Toujours en mode $USER | ||
| + | |||
| + | <code bash> | ||
| + | ssh-copy-id root@192.168.0.12 | ||
| + | ssh-copy-id root@192.168.0.23 | ||
| + | ssh-copy-id root@192.168.0.43 | ||
| + | ...</ | ||
| + | Autant de fois que d' | ||
| + | |||
| + | <code bash> | ||
| + | < | ||
| + | / | ||
| + | The authenticity of host ' | ||
| + | ECDSA key fingerprint is SHA256: | ||
| + | Are you sure you want to continue connecting (yes/ | ||
| + | / | ||
| + | / | ||
| + | root@192.168.0.43' | ||
| + | Number of key(s) added: 1 | ||
| + | |||
| + | Now try logging into the machine, with: " | ||
| + | and check to make sure that only the key(s) you wanted were added.</ | ||
| + | |||
| + | FIXME root@192.168.0.43' | ||
| + | |||
| + | |||
| + | ====== Déployer pssh ====== | ||
| + | |||
| + | ===== Initialiser pssh ===== | ||
| + | |||
| + | Utilisez **ssh-agent** pour vous authentifier automatiquement (avec un nom de shell comme argument pour que les variables d' | ||
| + | Ajoutez la clé avec **ssh-add** et tapez votre mot de passe __une seule fois__. FIXME pas forcément le mot de passe de la machine mais une mot de passe nouvellement choisi non ? | ||
| + | |||
| + | <code bash> | ||
| + | ssh-add | ||
| + | Enter passphrase for / | ||
| + | |||
| + | |||
| + | ===== Utiliser parallel-ssh ===== | ||
| + | |||
| + | ==== L' | ||
| + | |||
| + | |||
| + | <code bash> | ||
| + | Répondra | ||
| + | < | ||
| + | [1] 15:21:04 [SUCCESS] root@192.168.0.11 | ||
| + | FreeBSD asgard-freeBSD 12.0-RELEASE-p13 FreeBSD 12.0-RELEASE-p13 GENERIC | ||
| + | [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 | ||
| + | </ | ||
| + | |||
| + | On remarque ici **l' | ||
| + | |||
| + | ==== L' | ||
| + | |||
| + | Pour **rediriger la sortie ssh des clients vers un fichier**, on utilisera l' | ||
| + | |||
| + | <code bash> | ||
| + | Répondra | ||
| + | < | ||
| + | [1] 15:22:47 [SUCCESS] root@192.168.0.11 | ||
| + | [2] 15:22:48 [SUCCESS] root@192.168.0.43</ | ||
| + | |||
| + | Et pour visualiser les sorties. | ||
| + | |||
| + | < | ||
| + | Répondra | ||
| + | < | ||
| + | FreeBSD asgard-freeBSD 12.0-RELEASE-p13 FreeBSD 12.0-RELEASE-p13 GENERIC | ||
| + | Linux Tinuviel-debianStable 4.19.0-6-amd64 #1 SMP Debian 4.19.67-2+deb10u2 (2019-11-11) x86_64 GNU/ | ||
| + | |||
| + | ==== Mise à jour à distance ==== | ||
| + | |||
| + | <code bash> | ||
| + | parallel-ssh -i -h / | ||
| + | |||
| + | :!: Attention ici il s'agit de la commande [[:apt]], à adapter selon votre gestionnaire de paquet :!: | ||
| + | |||
| + | ==== Copier des fichiers vers les clients ==== | ||
| + | |||
| + | __Syntaxe__ | ||
| + | <code bash> | ||
| + | |||
| + | __Exemple__ | ||
| + | <code bash> | ||
| + | |||
| + | ==== Tuer des processus sur les postes clients ==== | ||
| + | |||
| + | __Syntaxe__ | ||
| + | <code bash> | ||
| + | |||
| + | __Exemple__ | ||
| + | <code bash> | ||
| + | |||
| + | ---- | ||
| + | // | ||
