From 3d08cbedf9af3f430e240410d87113883919d8c7 Mon Sep 17 00:00:00 2001 From: Arnaud Daby-Seesaram Date: Sun, 13 Oct 2024 14:43:39 +0200 Subject: [PATCH] texinfo: Ajout de la page SSH. --- crans.texi | 111 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 109 insertions(+), 2 deletions(-) diff --git a/crans.texi b/crans.texi index 073fbf4..bb3d19d 100644 --- a/crans.texi +++ b/crans.texi @@ -1520,11 +1520,118 @@ Une personne en qui on a totalement confiance a signé cette clef Trois personnes en qui on a partiellement confiance ont signé cette clef @end itemize - @node SSH @subsection SSH -TODO. +SSH (Secure Shell) est un protocole permettant d'exécuter des commandes +sur un serveur distant. Il utilise le port 22 en TCP. + +Sa version 2 est spécifiée par les RFC +@itemize +@item +@uref{https://datatracker.ietf.org/doc/html/4250,4250}, +@uref{https://datatracker.ietf.org/doc/html/4251,4251}, +@uref{https://datatracker.ietf.org/doc/html/4252,4252}, +@uref{https://datatracker.ietf.org/doc/html/4253,4253} et +@uref{https://datatracker.ietf.org/doc/html/4254,4254}. +@end itemize + +@subsubsection OpenSSH + +Le client de prédilection pour utiliser SSH est le client de la suite +OpenSSH (qui fourni également un serveur et d'autres utilitaires +permettant de gérer les clefs cryptographiques), disponible dans le +paquet Debian @code{openssh-client}. + +@subsubsection Clefs SSH + +Vous pouvez générer des clefs cryptographiques permettant de vous +authentifier directement sur le serveur distant (plutôt que par mot de +passe) avec l'utilitaire @code{ssh-keygen} ainsi : + +@verbatim +ssh-keygen -t ${TYPE} -b ${BITS} +@end verbatim + +Où @code{TYPE} peut être : +@itemize +@item +@code{rsa} +@item +@code{ecdsa} (dans ce cas @code{BITS} doit valoir 256, 384 ou 521) +@item +@code{ed25519} (dans ce cas @code{BITS} doit valoir 256) +@end itemize + +@code{ssh-keygen} vous demande ensuite le chemin du fichier de clef +ainsi que sa passphrase et génère une clef privée ainsi qu'une clef +publique se terminant par @code{.pub}. + +Un autre utilitaire, @code{ssh-copy-id} permet de copier la clef sur le +serveur distant par exemple : + +@verbatim +ssh-copy-id -i ~/.ssh/id_ed25519.pub login@zamok.crans.org +@end verbatim + +@quotation Attention +il faut absolument garder la clef privée sur votre serveur et ne pas +l'envoyer sur le serveur distant. +@end quotation + +@subsubsection Exemples + +À la première connexion @code{ssh} demande s'il faut faire confiance à +la clef du serveur : + +@verbatim +benjamin@om ~ $ ssh gitlab.crans.org +The authenticity of host 'gitlab.crans.org (185.230.79.14)' can't be +established. +ECDSA key fingerprint is SHA256:StU+25vCTTs+opjyjMZTLvl+gvR+ViQWUkE1jRENnkQ. +Are you sure you want to continue connecting (yes/no/[fingerprint])? +@end verbatim + +Il est de bon usage de confirmer l'authenticité de cette clef afin de ne +pas être vulnérable aux attaque de type Man in the Middle. Pour celà il +y a une solution : l'administrateur du serveur doit vous confirmer +l'empreinte (fingerprint) de la clef par un moyen sécurisé. Voici une +liste non exhaustive de moyens plus ou moins sécurisés : + +@itemize +@item +Si vous êtes vous-même l'administrateur du serveur la commande @code{for +key in /etc/ssh/ssh_host_*.pub; do ssh-keygen -lf $@{key@}; done} sur le +serveur pour afficher les empreintes de vos clefs. +@item +Se faire confirmer la clef oralement par l'administrateur. +@item +Se faire confirmer la clef par un mail d'un administrateur de confiance +signé GPG. +@item +Utiliser des clefs stockées dans le DNS (@pxref{DNS}) et signées DNSSEC, +ceci peut se faire en ajoutant l'option @code{-oVerifyHostKeyDNS=yes} à +@code{ssh}. +@end itemize + +Une fois que vous vous êtes assuré de l'authenticité de la clef vous +pouvez entrer @code{yes} dans le prompt ci-dessus. + +@code{ssh} vous demande ensuite votre mot de passe ou la passphrase de +votre clef, entrez le et appuyez sur Entrée pour vous connecter, +félicitations vous devriez avoir votre shell sur le serveur distant. + +@subsubsection Exemple de conf ssh + +Après avoir @code{ssh-copy-id} sa clef public comme précisé plus haut on +peut définir une conf qui permet d'aller sur nimporte quel serveur +depuis votre machine via un @code{ProxyJump}. + +@verbatim +Host *.adm.crans.org + User _usernounou + ProxyJump _usernounou@hodaur.crans.org +@end verbatim @node ZFS @subsection ZFS