# OpenSSH

OpenSSH (OpenBSD Secure Shell) est un ensemble d'outils informatiques libres permettant des communications sécurisées sur un réseau informatique en utilisant le protocole SSH.

## Historique

Créé comme alternative open source à la suite logicielle proposée par la société SSH Communications Security, OpenSSH est développé depuis 1999 par l'équipe d'OpenBSD, dirigée par son fondateur, Theo de Raadt, et diffusé sous licence BSD.

## Présentation technique

OpenSSH est à la fois une brique logicielle du système OpenBSD et l'implémentation SSH la plus utilisée sur les systèmes BSD et GNU/Linux. L'équipe du projet OpenSSH maintient une version de base, propre à OpenBSD et une version multi-plateforme sous l'appellation Portable OpenSSH à destination des systèmes compatibles (autres BSD, systèmes GNU/Linux...). Les versions multi-plateforme sont estampillées d'un p comme portable : par exemple OpenSSH 5.0p1.
La suite logicielle OpenSSH inclut les outils suivants :
* ssh, un remplaçant pour les clients rlogin et telnet :
    ssh utilisateur@exemple.com
* scp, un remplaçant pour le client rcp :
    scp utilisateur@exemple.com:~/utilisateur .
* sftp, un remplaçant pour le client ftp :
    sftp utilisateur@exemple.com
* sshd, le daemon SSH :
    sshd
* sftp-server, le daemon remplaçant le serveur FTP. sftp-server est un sous-système lancé par sshd quand celui-ci reçoit une demande de connexion d'un client sftp.
    sftp-server
* ssh-keygen (en), programme de génération, gestion et conversion des clés RSA, DSA et DSA basées sur les courbes elliptiques. Par défaut, la clé privée générée par ssh-keygen est un fichier texte sans extension (dont l'utilisation peut être protégé par une phrase secrète) et la clé publique associée est un fichier texte d'extension .pub. Ces paires de clés servent soit à l'authentification des hôtes (attribut HostKey du serveur sshd) soit à l'authentification des utilisateurs (attribut IdentityFile du client ssh).
    keygen -t ecdsa -b 384 -f .ssh/maclé -C commentaire
* ssh-agent, agent d'authentification.
* ssh-add, agent de gestion des clés privées de l'utilisateur. ssh-agent et ssh-add font office de trousseau de clés.
* ssh-keyscan, utilitaire de récupération et vérification des clés publiques d'hôtes distants.
* ssh-keysign, Agent d'authentification servant si l'option HostbasedAuthentication est activée sur le serveur (option désactivée par défaut).
* ssh-copy-id, utilitaire servant à déposer sa clé publique sur un serveur distant.
OpenSSH utilise la cryptographie asymétrique comme mécanisme d'authentification. À ce titre, OpenSSH gère les clés RSA, les clés DSA et les clés DSA basées sur les courbes elliptiques. OpenSSH reconnaît aussi les certificats X509 et les fichiers au format PKCS#12.
Le modèle de sécurité d'OpenSSH n'utilise pas d'IGC mais préfère la méthode du Trust on first use (en) ; avec cette méthode, chaque nouvelle connexion à un serveur SSH jusque là inconnu du client nécessite l'approbation de l'utilisateur. Si l'utilisateur accepte la clé publique que lui présente ce serveur SSH (soit sans vérification ce qui n'est pas souhaitable, soit après vérification de l'empreinte de la clé publique que l'utilisateur aura obtenu auparavant) le client ssh poursuivra les autres étapes de la connexion SSH pendant que l'utilitaire ssh-keyscan enregistrera la clé publique de l'hôte dans un fichier nommé known_hosts. Le fichier known_hosts conserve l'ensemble des clés publiques associées aux hôtes (serveurs SSH) qui ont été approuvées. Pour toute nouvelle connexion auprès d'un hôte (serveur SSH) connu, l'utilitaire ssh-keyscan va comparer l'empreinte de la clé publique que lui soumet le serveur avec celle qu'il a précédemment enregistrée dans le fichier known_hosts.

## Vunérabilités

Le 29 mars 2024, une grave Attaque de la chaîne logistique (en) de XZ Utils, visant par rebond le serveur OpenSSH a été détectée. Le code d'OpenSSH n'est pas directement en cause, c'est son association à liblzma via libsystemd qui ouvre la faille.