Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
pssh [Le 17/03/2020, 19:35] moths-art créée |
pssh [Le 14/12/2023, 15:51] (Version actuelle) percherie Avertissement sur les droits et usage ssh |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag>administration serveur ssh}} | ||
+ | ---- | ||
====== PSSH (parallel-ssh) ====== | ====== PSSH (parallel-ssh) ====== | ||
| | ||
Ligne 10: | Ligne 12: | ||
* Compatible avec tous les Linux, Unix et freeBSD | * 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.** | + | Ce logiciel est très utile sur un parc de PC, puisque vous mettez à jour l'ensemble du parc depuis une seule machine. |
====== Configurer les postes clients ====== | ====== Configurer les postes clients ====== | ||
+ | <note tip>Il est possible d'écrire un script d'automatisation afin d'alléger cette tâche.</note> | ||
+ | <note important>Il est déconseillé de permettre la connexion ssh au compte root</note> | ||
+ | Sur chaque postes clients il s'agira de : | ||
- | Tâches à réaliser sur chaque client. Ecrire un script d'automatisation afin d'alléger cette tâche. | + | * [[:tutoriel:comment_installer_un_paquet|Installez]] le **[[:ssh?#installation_du_serveur_ssh|serveur SSH]]**. Chaque client possédera donc son propre serveur ssh. |
- | ===== Installer le paquet openssh-server ===== | + | * Configurer ces serveurs ssh pour qu'il accepte les connexions root et les autorisations par clefs et non mot de passe : |
- | <code bash># aptitude install openssh-server</code> | + | * avec les [[:sudo|droits d'administration]], [[:tutoriel:comment_modifier_un_fichier|modifiez le fichier]] **/etc/ssh/sshd_config** pour mettre à jour les lignes suivantes avec ces entrées : <file bash> |
- | 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 | PermitRootLogin yes | ||
- | PubkeyAuthentication yes</code> | + | PubkeyAuthentication yes</file> |
+ | * Démarrer ou redémarrer le [[:services|service]] ssh. Il faut généralement les droits administrateur. | ||
+ | * Par exemple <code bash>sudo service ssh start</code> ou <code>sudo service ssh restart</code> | ||
+ | Les clients sont prêts à l'emploi | ||
- | 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 ====== | ====== Configuration de la machine maître ====== | ||
===== Installer pssh ===== | ===== Installer pssh ===== | ||
+ | [[:tutoriel:comment_installer_un_paquet|Installez]] [[apt>pssh]] | ||
- | <code bash># aptitude install pssh</code> | ||
===== pssh / parallel-ssh ===== | ===== pssh / parallel-ssh ===== | ||
- | |||
Sous debian sid, l'utiliaire **pssh** s'appelle **parallel-ssh** (sous d'autres distributions c'est simplement **pssh**). | Sous debian sid, l'utiliaire **pssh** s'appelle **parallel-ssh** (sous d'autres distributions c'est simplement **pssh**). | ||
Ligne 49: | Ligne 43: | ||
Construire sa clef , sauf si on en a déjà une (compte $USER, non en root) | Construire sa clef , sauf si on en a déjà une (compte $USER, non en root) | ||
- | <code bash>$ ssh-keygen | + | <code bash>ssh-keygen</code> |
- | + | Vérifiez par <code bash>ls -l .ssh/ </code> | |
- | $ ls -l .ssh/ | + | qui doit vous retourner |
+ | <code> | ||
total 12 | total 12 | ||
- | -rw------- 1 ragnarok cyrille 1876 juin 26 2019 id_rsa | + | -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 397 juin 26 2019 id_rsa.pub | ||
-rw-r--r-- 1 ragnarok cyrille 2220 mars 14 16:42 known_hosts</code> | -rw-r--r-- 1 ragnarok cyrille 2220 mars 14 16:42 known_hosts</code> | ||
Ligne 66: | Ligne 61: | ||
Créer un fichier contenant les hosts | Créer un fichier contenant les hosts | ||
- | <code bash>mkdir /etc/ssh/pssh_host | + | <code bash>mkdir /etc/ssh/pssh_host</code> |
- | nano /etc/ssh/pssh_host/pssh | + | Modifiez le ensuite. Par exemple avec [[:nano]] si vous êtes sur une [[:console]]) |
+ | <code>nano /etc/ssh/pssh_host/pssh</code> | ||
+ | <file bash> | ||
###Mettre les adresses IP des serveurs à administrer ici. | ###Mettre les adresses IP des serveurs à administrer ici. | ||
root@192.168.0.11 | root@192.168.0.11 | ||
Ligne 73: | Ligne 70: | ||
root@192.168.0.23 | root@192.168.0.23 | ||
root@192.168.0.43 | root@192.168.0.43 | ||
- | ...</code> | + | ...</file> |
Si vous souhaitez utiliser les noms des machines plutôt que leurs adresses IP, il faudra modifier et adapter le fichier **/etc/hosts** | 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 ===== | ===== Exporter la clef publique sur les clients ===== | ||
+ | |||
+ | Toujours en mode $USER | ||
<code bash>ssh-copy-id root@192.168.0.11 | <code bash>ssh-copy-id root@192.168.0.11 | ||
Ligne 86: | Ligne 85: | ||
Autant de fois que d'entrées dans votre fichier **/etc/ssh/pssh_host/pssh** | 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 | + | <code bash>ssh-copy-id root@192.168.0.43</code> |
+ | <code> | ||
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/ragnarok/.ssh/id_rsa.pub" | /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. | The authenticity of host '192.168.0.43 (192.168.0.43)' can't be established. | ||
Ligne 98: | Ligne 98: | ||
Now try logging into the machine, with: "ssh 'root@192.168.0.43'" | 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> | and check to make sure that only the key(s) you wanted were added.</code> | ||
+ | |||
+ | FIXME root@192.168.0.43's password on ne doit pas saisir le mdp de la machine distante/cliente ? | ||
Ligne 104: | Ligne 106: | ||
===== Initialiser 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__. FIXME pas forcément le mot de passe de la machine mais une mot de passe nouvellement choisi non ? | ||
- | 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 | |
- | <code bash>$ ssh-agent bash | + | |
- | $ ssh-add | + | |
Enter passphrase for /xxxx/.ssh/identity:</code> | Enter passphrase for /xxxx/.ssh/identity:</code> | ||
+ | |||
===== Utiliser parallel-ssh ===== | ===== Utiliser parallel-ssh ===== | ||
- | ==== Exemple, option -i ==== | + | ==== L'option -i ==== |
- | <code bash>$ parallel-ssh -i -h /etc/ssh/pssh_host/pssh_hosts uname -a | + | <code bash>parallel-ssh -i -h /etc/ssh/pssh_host/pssh uname -a</code> |
+ | Répondra | ||
+ | <code> | ||
[1] 15:21:04 [SUCCESS] root@192.168.0.11 | [1] 15:21:04 [SUCCESS] root@192.168.0.11 | ||
FreeBSD asgard-freeBSD 12.0-RELEASE-p13 FreeBSD 12.0-RELEASE-p13 GENERIC amd64 | FreeBSD asgard-freeBSD 12.0-RELEASE-p13 FreeBSD 12.0-RELEASE-p13 GENERIC amd64 | ||
Ligne 125: | Ligne 130: | ||
On remarque ici **l'option -i** qui permet de visualiser ce que retourne le terminal ssh des postes clients | On remarque ici **l'option -i** qui permet de visualiser ce que retourne le terminal ssh des postes clients | ||
- | ==== Exemple, option -o ==== | + | ==== L'option -o ==== |
Pour **rediriger la sortie ssh des clients vers un fichier**, on utilisera l'**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 | + | <code bash>parallel-ssh -o /tmp/uname -h /etc/ssh/pssh_host/pssh uname -a</code> |
+ | Répondra | ||
+ | <code> | ||
[1] 15:22:47 [SUCCESS] root@192.168.0.11 | [1] 15:22:47 [SUCCESS] root@192.168.0.11 | ||
[2] 15:22:48 [SUCCESS] root@192.168.0.43</code> | [2] 15:22:48 [SUCCESS] root@192.168.0.43</code> | ||
Ligne 135: | Ligne 142: | ||
Et pour visualiser les sorties. | Et pour visualiser les sorties. | ||
- | <code>$ cat /tmp/uname/root@192.168.0.11 /tmp/uname/root@192.168.0.43 | + | <code>cat /tmp/uname/root@192.168.0.11 /tmp/uname/root@192.168.0.43</code> |
+ | Répondra | ||
+ | <code> | ||
FreeBSD asgard-freeBSD 12.0-RELEASE-p13 FreeBSD 12.0-RELEASE-p13 GENERIC amd64 | 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> | 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 ==== | + | ==== Mise à jour à distance ==== |
- | <code bash>$ parallel-ssh -i -h /etc/ssh/pssh_host/pssh_hosts apt-get update | + | <code bash>parallel-ssh -i -h /etc/ssh/pssh_host/pssh apt update |
- | $ parallel-ssh -i -h /etc/ssh/pssh_host/pssh_hosts apt-get upgrade</code> | + | parallel-ssh -i -h /etc/ssh/pssh_host/pssh apt full-upgrade</code> |
- | ===== Copier des fichiers vers les clients ===== | + | :!: Attention ici il s'agit de la commande [[:apt]], à adapter selon votre gestionnaire de paquet :!: |
+ | ==== Copier des fichiers vers les clients ==== | ||
__Syntaxe__ | __Syntaxe__ | ||
- | + | <code bash>parallel-scp -h /fichier_de_conf_pssh source destinatire</code> | |
- | <code bash>$ parallel-scp -h /fichier_de_conf_pssh source destinatire</code> | + | |
__Exemple__ | __Exemple__ | ||
+ | <code bash>parallel-scp -h /etc/ssh/pssh_host/pssh_hosts $HOME/test.txt /tmp/</code> | ||
- | <code bash>$ parallel-scp -h /etc/ssh/pssh_host/pssh_hosts $HOME/test.txt /tmp/</code> | + | ==== Tuer des processus sur les postes clients ==== |
- | + | ||
- | Tuer des processus sur les postes clients | + | |
__Syntaxe__ | __Syntaxe__ | ||
- | <code bash>$ parallel-nuke -h /fichier_de_conf_pssh nom_du_processus</code> | + | <code bash>parallel-nuke -h /fichier_de_conf_pssh nom_du_processus</code> |
__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// | + | ---- |
+ | //[[:utilisateurs:cyrille|cyrille]] AT cbiot DOT fr// |