Secure Shell (SSH) est une méthode pour accéder de manière sécurisée à une machine distante via un réseau non sécurisé. Elle commence par une connexion TCP depuis le client SSH vers la machine distante (serveur SSH). Les deux machines échangent les versions SSH, négocient les algorithmes cryptographiques et exécutent un protocole d'échange de clés.
Le serveur SSH envoie une clé publique et une signature, que le client vérifie. Cette clé d'hôte est vérifiée dans le fichier known_hosts. Les deux machines dérivent des clés de session séparément et ne les partagent jamais sur le réseau.
Le client SSH envoie ensuite sa clé publique pour l'authentification. Le serveur SSH la compare avec authorized_keys, et le client signe la demande d'authentification avec sa clé privée, envoie une signature numérique au serveur. La clé privée ne quitte jamais votre machine.
Le serveur vérifie la signature avec la clé publique du client, terminant l'authentification SSH et ouvrant la session de communication.
Source: ByteByteGo · Résumé par HeadlinesBriefing