Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédenteDernière révisionLes deux révisions suivantes | ||
pssh [2020/03/15 16:45] – créée cbiot | pssh [2020/03/15 16:49] – cbiot | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== Installer parallel-ssh ====== | ||
+ | | ||
+ | **pssh** est un outil en ligne de commande pour exécuter **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 | ||
+ | |||
+ | **Très utile puisque que sur un parc de PC, vous mettez à jour l' | ||
+ | |||
+ | ====== Configurer les postes clients ====== | ||
+ | |||
+ | Tâches à réaliser sur chaque client. Ecrire un script d' | ||
+ | ===== Installer le paquet openssh-server ===== | ||
+ | <code bash># aptitude install 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 | ||
+ | <code bash># nano / | ||
+ | Mettre à jour les lignes suivantes avec ces entrées | ||
+ | <code bash> | ||
+ | PermitRootLogin yes | ||
+ | PubkeyAuthentication yes</ | ||
+ | |||
+ | |||
+ | Démarrer le service ssh ou le redémarrer | ||
+ | <code bash># service ssh start | ||
+ | # service ssh restart</ | ||
+ | |||
+ | Les clients sont prêts à l' | ||
+ | ====== Configuration de la machine maître ====== | ||
+ | ===== Installer pssh ===== | ||
+ | |||
+ | |||
+ | <code bash># aptitude install 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>$ ssh-keygen | ||
+ | |||
+ | $ ls -l .ssh/ | ||
+ | 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> | ||
+ | nano / | ||
+ | ###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 ===== | ||
+ | |||
+ | <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>$ ssh-copy-id root@192.168.0.43 | ||
+ | / | ||
+ | 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.</ | ||
+ | |||
+ | |||
+ | ====== Déployer pssh ====== | ||
+ | |||
+ | ===== Initialiser pssh ===== | ||
+ | |||
+ | |||
+ | Utilisez **ssh-agent** pour vous authentifier automatiquement (avec un nom de shell comme argument pour que les variables d' | ||
+ | |||
+ | <code bash>$ ssh-agent bash | ||
+ | $ ssh-add | ||
+ | Enter passphrase for / | ||
+ | |||
+ | ===== Utiliser parallel-ssh ===== | ||
+ | |||
+ | ==== Exemple, option -i ==== | ||
+ | |||
+ | |||
+ | <code bash>$ parallel-ssh -i -h / | ||
+ | [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' | ||
+ | |||
+ | ==== Exemple, option -o ==== | ||
+ | |||
+ | Pour **rediriger la sortie ssh des clients vers un fichier**, on utilisera l' | ||
+ | |||
+ | <code bash>$ parallel-ssh -o / | ||
+ | [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. | ||
+ | |||
+ | < | ||
+ | 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/ | ||
+ | |||
+ | ==== Exemple, mise à jour à distance ==== | ||
+ | |||
+ | <code bash>$ parallel-ssh -i -h / | ||
+ | $ parallel-ssh -i -h / | ||
+ | |||
===== Copier des fichiers vers les clients ===== | ===== Copier des fichiers vers les clients ===== | ||
Ligne 17: | Ligne 162: | ||
__Exemple__ | __Exemple__ | ||
<code bash>$ parallel-nuke | <code bash>$ parallel-nuke | ||
+ | |||
+ | --- // |