Installer parallel-ssh

parallel-ssh permet d'administrer un parc de PC via ssh en envoyant des reqûtes pssh is a command line tool for executing ssh in parallel on some hosts. It specialties includes:

Sending input to all of the processes
Inputting a password to ssh
Saving output to files
IT/sysadmin task automation such as patching servers or looking for error logs
Timing out and more

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 processus

Saisie d'un mot de passe pour ssh

Enregistrement de la sortie dans des fichiers

Automatisation des tâches IT / sysadmin telles que l'application de correctifs aux serveurs, de mise à jour, de configuration

Compatible avec tous les Linux, Unix et freeBSD

Configuration de la machine maître

Installer pssh

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

$ 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

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 passées. Ici, nous les stockons dans /etc/ssh/pssh_host mais vous pouvez le mettre où vous le souhaitez.

Créer un fichier contenant les hosts

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

Configurer les postes clients

Installer le paquet openssh-server

# aptitude install openssh-server

configurer openssh-server

Configurer le serveur ssh pour qu'il accepte les connexions root et les autorisations par clefs et non mot de passe

# nano /etc/ssh/sshd_config

Mettre à jour les lignes suivantes avec ces entrées

PermitRootLogin yes PubkeyAuthentication yes

Démarrer le service ssh ou le redémarrer

# service ssh start # service ssh restart

Les clients sont prêts à l'emploi

Exporter la clef publique sur les clients

ssh-copy-id root@192.168.0.11 ssh-copy-id root@192.168.0.23 ssh-copy-id root@192.168.0.43

Autannt de fois que d'entrée dans votre fichier /etc/ssh/pssh_host/pssh

$ 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.

$ ssh-agent bash $ ssh-add Enter passphrase for /xxxx/.ssh/identity:

Tester

$ 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

Redirection de la sortie ssh client vers un fichier

$ 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 $ 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