Présentation générale d'openSSH
Rédigé par Marc GUILLAUME | Aucun commentaireL'implémentation la plus complète du protocle SSH sur GNU/Linux
L'implémentation du protocole qui est intégrée aux distributions linux s'appelle openSSH et est développée par l'équipe d'OpenBSD sous la direction de Théo de Raadt, et est scindée en deux paquets : openssh-server et openssh-client dont le nom indique clairement la fonction. Le chiffrement des données repose sur la méthode dite chiffrement assymétrique, utilisant un jeu de "clés" publique/privée de structure particulière, dites souvent clés Diffie/Hellman du nom des deux chercheurs, Whitfield Diffie et Martin Hellman, ayant publié le premier article concernant ce type de cryptographie en 1976.
Comme dans la plupart des informations et explications de ce site concernant GNU/Linux, nous utiliserons la distribution Debian. Mais, en dehors des commandes d'installation des paquets; les informations seront valables pour la quasi totalité des distributions Linux généralistes.
Fichiers de configuration
Il existe deux ensembles différents de fichiers de configuration : ceux pour les programmes clients (c'est-à-dire, ssh, scp, et sftp), et ceux pour le serveur (le démon sshd).
Les informations de configuration SSH pour l'ensemble du système sont stockées dans le répertoire /etc/ssh/
comme décrit dans Table « Fichiers de configuration à l'échelle du système ». Les informations de configuration SSH spécifiques à l'utilisateur sont stockées dans le répertoire ~/.ssh/
dans le répertoire personnel de l'utilisateur comme décrit dans Table « Fichiers de configuration spécifiques à l'utilisateur ».
Fichier | Description |
---|---|
/etc/ssh/moduli |
Lorsque les clés sont échangées au début d'une session SSH, une valeur partagée et secrète est créée, qui ne peut être déterminée par l'une ou l'autre des parties seulement. Cette valeur est ensuite utilisée pour fournir une authentification de l'hôte.Ce fichier contient des groupes Diffie-Hellman utilisés pour cette opération. L'utilitaire ssh-keygen permet de générer ce type de groupes (de très grands nombres premiers). |
/etc/ssh/ssh_config |
Le fichier de configuration du client SSH par défaut. Notez qu'il peut-être surchargé par un fichier ~/.ssh/config si ce fichier existe. |
/etc/ssh/sshd_config |
Le fichier de configuration du démon sshd. |
/etc/ssh/ssh_host_dsa_key |
La clé privée DSA utilisée par le démon sshd. |
/etc/ssh/ssh_host_dsa_key.pub |
La clé publique DSA utilisée par le démon sshd. |
/etc/ssh/ssh_host_key |
La clé privée RSA utilisée par le démon sshd pour la version 1 du protocol SSH. |
/etc/ssh/ssh_host_key.pub |
La clé publique RSA utilisée par le démon sshd pour la version 1 du protocol SSH. |
/etc/ssh/ssh_host_rsa_key |
La clé privée RSA utilisée par le démon sshd pour la version 2 du protocol SSH. |
/etc/ssh/ssh_host_rsa_key.pub |
La clé publique RSA utilisée par le démon sshd pour la version 2 du protocol SSH. |
/etc/ssh/ssh_host_ecdsa_key |
La clé privée ECDSA utilisée par le démon sshd |
/etc/ssh/ssh_host_ecdsa_key.pub |
La clé publique ECDSA utilisée par le démon sshd |
/etc/ssh/ssh_host_ed25519_key |
La clé privée ed25519 utilisée par le démon sshd |
/etc/ssh/ssh_host_ed25519_key.pub |
La clé publique ed25519 utilisée par le démon sshd |
/etc/pam.d/sshd |
Le fichier de configuration PAM pour le démon sshd. |
Fichier | Description |
---|---|
~/.ssh/authorized_keys |
Contient une liste des clés publiques autorisées à se connecter sur la machine. Lorsque le client se connecte à un serveur, le serveur authentifie le client en vérifiant si sa clé publique figure dans ce fichier. |
~/.ssh/id_dsa |
Contient la clé privée DSA de l'utilisateur. |
~/.ssh/id_dsa.pub |
Contient la clé publique DSA de l'utilisateur. |
~/.ssh/id_rsa |
La clé privée RSA utilisée par ssh pour la version 2 du protocol SSH. |
~/.ssh/id_rsa.pub |
La clé publique RSA utilisée par ssh pour la version 2 du protocol SSH. |
~/.ssh/id_ecdsa |
La clé privée ECDSA utilisée par ssh. |
~/.ssh/id_ecdsa.pub |
La clé publique ECDSA utilisée par ssh. |
~/.ssh/identity |
La clé privée RSA utilisée par ssh pour la version 1 du protocl SSH. |
~/.ssh/identity.pub |
La clé publique RSA utilisée par ssh pour la version 1 du protocl SSH. |
~/.ssh/known_hosts |
Contient les clés hôte des serveurs SSH auxquels l'utilisateur a accédé. Ce fichier est très important pour s'assurer que le client SSH se connecte au bon serveur SSH. |
Pour davantage d'informations concernant les différentes directives qui peuvent être utilisées dans les fichiers de configuration SSH, voir les pages de manuel ssh_config(5) et sshd_config(5).
Les programmes annexes
Plusieurs programmes sont fournis avec les paquets openssh. Il permettent de profiter de toutes les possibilités d'openssh qui sont très diverses.
- ssh-keygen
- Ce programme couvre tout ce qui concerne la génération, la gestion et la conversion des clés d'authentification y compris la signature de certificats utilisés pour un type d'identification ssh dont nous parlerons dans un prochain chapitre.
Nous avons vu au chapitre précédent que l'identification ssh par défaut se faisait par nom de connexion et mot de passe. Pour une utilisation quotidienne cette méthode n'est pas la plus commode. SSH permet d'utiliser pour se connecter des clés d'authentification et des techniques de signature de certificats permettant une utilisation plus souple et plus sécurisée.
- ssh-agent
- Il s'agit du programme qui charge en mémoire, le temps d'une session les diverses clés privées d'un utilisateur, permettant par exemple de ne pas avoir à déchiffrer à chaque appel une clé ssh qui aurait été encodée avec une passphrase (tout ceci sera détaillé au chapitre suivant).
Il est généralement chargé au démarrage de la session, et les clés lui sont fournies (ou retirées) par la commande ssh-add.
- ssh-add
- Il s'agit du problème permettant de charger une clé et sa passphrase dans ssh-agent. L'utilisation consiste à invoquer ssh-add suivi du chemin vers la clé privée à déchiffrer et à saisir la passphrase associée à cette clé pour que les applications ssh puissent utiliser la clé sans demander d'autres informations à l'utilisateur.
- ssh-keyscan
- Ce programme est utilisé pour récupérer les clés publiques de serveurs et peut-être utilisé pour contrôler les fichiers known_hosts.
Nous savons en gros comment utiliser ssh, voyons maintenant l'installation et l'utilisation détaillée de tous ces éléments. En commençant par la partie client dans le chapitre suivant.