pssh

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
Dernière révisionLes deux révisions suivantes
pssh [2020/03/15 16:45] – créée cbiotpssh [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
 +  *     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
 +
 +**Très utile puisque que sur un parc de PC, vous mettez à jour l'ensemble du parc depuis une seule machine.**
 +
 +====== 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 bash># aptitude install openssh-server</code>
 +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 /etc/ssh/sshd_config</code>
 +Mettre à jour les lignes suivantes avec ces entrées
 +<code bash>
 +PermitRootLogin yes
 +PubkeyAuthentication yes</code>
 +
 +
 +Démarrer le service ssh ou le redémarrer
 +<code bash># service ssh start
 +# service ssh restart</code>
 +
 +Les clients sont prêts à l'emploi
 +====== Configuration de la machine maître ======
 +===== Installer pssh =====
 +
 + 
 +<code bash># aptitude install pssh</code>
 +===== 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)
 +<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  397 juin  26  2019 id_rsa.pub
 +-rw-r--r-- 1 ragnarok cyrille 2220 mars  14 16:42 known_hosts</code>
 +
 +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
 +<code bash>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.43
 +...</code>
 +
 +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 =====
 +
 +<code bash>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>
 +Autant de fois que d'entrées dans votre fichier **/etc/ssh/pssh_host/pssh**
 +
 +<code bash>$ 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.</code>
 +
 +
 +====== 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__.
 +
 +<code bash>$ ssh-agent bash
 +$ ssh-add
 +Enter passphrase for /xxxx/.ssh/identity:</code> 
 +
 +===== Utiliser parallel-ssh =====
 +
 +==== Exemple, option -i ====
 +
 +
 +<code bash>$ 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
 +</code>
 +
 +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**
 +
 +<code bash>$ 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.43</code>
 +
 +Et pour visualiser les sorties.
 +
 +<code>$ 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/Linux</code>
 +
 +==== Exemple, mise à jour à distance ====
 +
 +<code bash>$ 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 upgrade</code>
 +
 ===== Copier des fichiers vers les clients ===== ===== Copier des fichiers vers les clients =====
  
Ligne 17: Ligne 162:
 __Exemple__ __Exemple__
 <code bash>$ parallel-nuke  -h /etc/ssh/pssh_host/pssh_hosts  nginx</code> <code bash>$ parallel-nuke  -h /etc/ssh/pssh_host/pssh_hosts  nginx</code>
 +
 + --- //[[cyrille@cbiot.fr|cyrille]] 2020/03/15 16:49//
  • pssh.txt
  • Dernière modification : 2022/10/04 19:49
  • de 127.0.0.1