texinfo: Ajout de la page SSH.

texinfo
Arnaud Daby-Seesaram 2024-10-13 14:43:39 +02:00
parent a668f5a9b9
commit 3d08cbedf9
1 changed files with 109 additions and 2 deletions

View File

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