pssh. Administrer un parc de machines.

Vos petites astuces, répertoire des tutoriels et astuces
Répondre
Avatar du membre
cyrille
Messages : 4914
Enregistré le : mar. 19 sept. 2017 08:49
Localisation : Nord - Avesnois
Contact :

pssh. Administrer un parc de machines.

Message par cyrille »

Installer parallel-ssh

Attention , les commandes sont données sans sudo, vérifier le prompt :
  • si # , nécessite un sudo
  • si $ , commande en user
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 : Tout sélectionner

# 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 : Tout sélectionner

# nano /etc/ssh/sshd_config
Mettre à jour les lignes suivantes avec ces entrées

Code : Tout sélectionner

PermitRootLogin yes
PubkeyAuthentication yes
Démarrer le service ssh ou le redémarrer

Code : Tout sélectionner

# service ssh start
# service ssh restart
Les clients sont prêts à l'emploi

Configuration de la machine maître

Installer pssh

Code : Tout sélectionner

# aptitude install 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)

Code : Tout sélectionner

$ ssh-keygen

Code : 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_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 /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.43
...

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 : 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
...
Autant de fois que d'entrées dans votre fichier /etc/ssh/pssh_host/pssh

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.
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 : Tout sélectionner

$ ssh-agent bash
$ ssh-add
Enter passphrase for /xxxx/.ssh/identity:
Utiliser parallel-ssh
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
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 : 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.43
Et pour visualiser les sorties.

Code : 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/Linux
Exemple, mise à jour à distance

Code : 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 upgrade
Copier des fichiers vers les clients

Syntaxe

Code : Tout sélectionner

$ parallel-scp -h /fichier_de_conf_pssh source destinatire
Exemple

Code : Tout sélectionner

$ parallel-scp  -h /etc/ssh/pssh_host/pssh_hosts  $HOME/test.txt /tmp/
Tuer des processus sur les postes clients

Syntaxe

Code : Tout sélectionner

$ parallel-nuke -h /fichier_de_conf_pssh nom_du_processus
Exemple

Code : Tout sélectionner

$ parallel-nuke  -h /etc/ssh/pssh_host/pssh_hosts  nginx

Merci de vérfier si ce how-to est à jour : https://cbiot.fr/dokuwiki/doku.php?id=pssh
# Laptops DELL Latitude : FreeBSD 12.1 xfce / Openbox ; DEBIAN SID xfce / Fluxbox # Work : parc de laptop Mint 18.3 xfce
# VPS : 1 vCore 2 GHz , SSD, RAM 4Go, Local RAID, DEBIAN OLDSTABLE # Serveur HP ProLiant ML 310e Gen 8 v2, DEBIAN STABLE
[ GIT : https://github.com/CyrilleBiot | Site : https://cbiot.fr ]

Répondre