texinfo: Ajout de la page SSH.
parent
a668f5a9b9
commit
3d08cbedf9
111
crans.texi
111
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
|
||||
|
|
Loading…
Reference in New Issue