Ouh là ! Heureusement que cela ne fonctionne pas.
Autant, il m’arrive de faire une vérification simple (pour savoir où j’en suis) du genre
for m in im01 im02 im03 im04 im05 im06 imhs impp
do
echo "machine" $m
ssh $m lsb_release -a
ssh $m uptime
echo "_____________"
done
autant je ne vai pas mettre dans une variable shell une commande complexe (et donc la nécessité de ne surtout pas oublier de mettre des guillemets chaque fois que je veux référencer “$commande” ) qui en plus réclame des droits étendus (coucou sudo
) et qui est susceptible de ne pas faire ce qu’on veut (le “-y” est pour le moins discutable)
Comme je viens tout juste de dépasser en âge les deux tiers de siècle, j’ai plutôt tendance à y aller calmement, détendu. Voir on est pas bien là à la fraîche décontractés du gland
C’est pourquoi, pour cette tâche routinière de mettre à jour les machines d’un parc de taille modeste, je procède ainsi :
- je me connecte en
ssh
sur une des machines
1 si je ne me suis pas connecté depuis le dernier redémarrage, une ligne de .bashrc (keychain) m’invite à taper ma phrase de passe, ce qui charge des clés ssh dans ssh-agent
(je mets la même phrase de passe pour toutes les clés)
2 sinon j’ai un message du genre
* keychain 2.8.5 ~ http://www.funtoo.org
* Found existing ssh-agent: 3813
* Known ssh key: /home/fp2/.ssh/id_rsa
* Known ssh key: /home/fp2/.ssh/id_rsa_legacy
* Known ssh key: /home/fp2/.ssh/id_ed25519
- je tape des commandes anodines du genre
uptime
et je détermine s’il y a déjà une session tmux
en utilisant une des commandes suivantes
who
w
tmux list-sessions
- si il y a déjà une session
tmux
tmux attach
sinon tmux
et je crée un certain nombre de fenêtres dans la nouvelle session.
- Je mets à jour la machine sur laquelle je me suis directement connecté
sudo pwd
sudo apt update
# si besoin
sudo apt upgrade
Un lecteur attentif se demande « pourquoi sudo pwd
? »
C’est psychologique : je vais taper des commandes privilégiées, je ne veux pas être distrait au moment où j’enchaîne ce genre de commandes par des interférences du système qui me demande un mot de passe. (et l’identifiant + mot de passe n’est pas forcément le même sur toutes les machines ). J’ai donc l’habitude de commencer par une commande sudo anodine.
- pour la mise à jour des autres systèmes c’est
ssh [user@]machine
sudo pwd
sudo apt update
sudo apt upgrade
exit
le tout dans une des fenêtres tmux
(donc possibilité de faire défiler l’affichage)
- une fois que l’intervention est terminée, fermeture en ordre
# fermeture de la session persistante `tmux` <prefix> == Ctrl-B par défaut
<prefix> D
# le message [detached (from session 0)] s'affiche
# fermeture de la connexion ssh
exit
# on se retrouve sur la machine locale après des messages du genre
# déconnexion
# Connection to drhpcm05 closed.
Pour la problématique de copier un fichier de configuration d’une machine sur l’autre, j’ai utilisé la méthode laborieuse suivante
scp -p /etc/fichier/deconf machine:/tmp
ssh machine
cd /tmp
sudo cp deconf /etc/fichier/deconf
sudo chown root:root /etc/fichier/deconf
exit
en utilisant moult copier/coller, mais c’est pénible.
Maintenant je combine sudo
et scp
de cette manière
# vérifier clés OK
sudo SSH_AUTH_SOCK=$SSH_AUTH_SOCK ssh machine id
# copie
sudo SSH_AUTH_SOCK=$SSH_AUTH_SOCK scp -p /etc/fichier/deconf machine:/etc/fichier/deconf
explication
- sudo on passe root uid=0
- SSH_AUTH_SOCK=$SSH_AUTH_SOCK ssh machine coommande
les informations de ssh-agent
sont prises en compte pour la commande ssh
ou scp
qui suit (et qui est exécutée par root)
La machine distante reçoit une connexion pour root
et donc consulte le fichier /root/.ssh/authorized_keys
fichier que j’ai créé précédemment avec les bons droits et le bon contenu.
résultat : ni vu ni connu, je lance une commande privilégiée sur une machine distante sans même taper de phrase de passe (ssh-agent répond à ma place).
Cordialement,
Regards,
Mit freundlichen Grüßen,
مع تحياتي الخالصة
F. Petitjean
Ingénieur civil du Génie Maritime.
« Moi, lorsque je n’ai rien à dire, je veux qu’on le sache. » (R. Devos)
« Celui qui, parti de rien, n’est arrivé nulle part n’a de merci à dire à personne !! »
Pierre Dac