Introduction
OpenSSH est une puissante collection d’outils pour le contrôle à distance et le transfert de données entre ordinateurs en réseau. Vous découvrirez également certains des paramètres de configuration possibles avec l’application serveur OpenSSH et comment les modifier sur votre système Ubuntu.
OpenSSH est une version disponible gratuitement de la famille d’outils de protocole Secure Shell (SSH) permettant de contrôler à distance ou de transférer des fichiers entre ordinateurs. Les outils traditionnels utilisés pour accomplir ces fonctions, tels que telnet ou rcp, ne sont pas sécurisés et transmettent le mot de passe de l’utilisateur en texte clair lorsqu’il est utilisé. OpenSSH fournit un démon serveur et des outils clients pour faciliter les opérations de contrôle à distance et de transfert de fichiers sécurisées et cryptées, remplaçant efficacement les outils existants.
Le composant serveur OpenSSH, sshd, écoute en permanence les connexions client depuis n’importe quel outil client. Lorsqu’une demande de connexion se produit, sshd configure la connexion correcte en fonction du type de connexion de l’outil client. Par exemple, si l’ordinateur distant se connecte à l’application client ssh, le serveur OpenSSH configure une session de contrôle à distance après l’authentification. Si un utilisateur distant se connecte à un serveur OpenSSH avec scp, le démon serveur OpenSSH initie une copie sécurisée des fichiers entre le serveur et le client après l’authentification. OpenSSH peut utiliser de nombreuses méthodes d’authentification, notamment un mot de passe simple, une clé publique et des tickets Kerberos.
Installation
L’installation des applications client et serveur OpenSSH est simple. Pour installer les applications clientes OpenSSH sur votre système Ubuntu, utilisez cette commande à une invite de terminal :
sudo apt install openssh-client
Pour installer l’application serveur OpenSSH et les fichiers de support associés, utilisez cette commande à une invite de terminal :
sudo apt install openssh-server
Configuration
Vous pouvez configurer le comportement par défaut de l’application serveur OpenSSH, sshd, en éditant le fichier /etc/ssh/sshd_config
. Pour plus d’informations sur les directives de configuration utilisées dans ce fichier, vous pouvez afficher la page de manuel appropriée avec la commande suivante, émise à l’invite d’un terminal :
man sshd_config
Il existe de nombreuses directives dans le fichier de configuration sshd contrôlant des éléments tels que les paramètres de communication et les modes d’authentification. Voici des exemples de directives de configuration qui peuvent être modifiées en éditant le fichier /etc/ssh/sshd_config
.
Astuce
Avant de modifier le fichier de configuration, vous devez faire une copie du fichier d’origine et le protéger de l’écriture afin d’avoir les paramètres d’origine comme référence et de les réutiliser si nécessaire.
Copiez le fichier
/etc/ssh/sshd_config
et protégez-le de l’écriture avec les commandes suivantes, émises à l’invite d’un terminal :sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.originalsudo chmod a-w /etc/ssh/sshd_config.original
De plus, comme la perte d’un serveur ssh peut signifier que vous perdez le chemin pour atteindre un serveur, vérifiez la configuration après l’avoir modifiée et avant redémarrage du serveur:
sudo sshd -t -f /etc/ssh/sshd_config
Voici des exemples de directives de configuration que vous pouvez modifier :
- Pour configurer votre OpenSSH pour qu’il écoute sur le port TCP 2222 au lieu du port TCP 22 par défaut, modifiez la directive de port en tant que telle :
Port 2222
- Pour que votre serveur OpenSSH affiche le contenu du fichier
/etc/issue.net
sous forme de bannière de pré-connexion, il suffit d’ajouter ou de modifier cette ligne dans le fichier/etc/ssh/sshd_config
:
Bannière /etc/problème.net
Après avoir apporté des modifications au fichier /etc/ssh/sshd_config
, enregistrez le fichier et redémarrez l’application serveur sshd pour effectuer les modifications à l’aide de la commande suivante à une invite de terminal :
sudo systemctl restart sshd.service
Avertissement
De nombreuses autres directives de configuration pour sshd sont disponibles pour modifier le comportement de l’application serveur en fonction de vos besoins. Cependant, si votre seule méthode d’accès à un serveur est ssh et que vous faites une erreur dans la configuration de sshd via le fichier
/etc/ssh/sshd_config
, vous risquez de vous retrouver hors du serveur lors du redémarrage. De plus, si une directive de configuration incorrecte est fournie, le serveur sshd peut refuser de démarrer, soyez donc très prudent lorsque vous modifiez ce fichier sur un serveur distant.
Les clés SSH
SSH permettent l’authentification entre deux hôtes sans avoir besoin d’un mot de passe. L’authentification par clé SSH utilise une clé privée et une clé publique.
Pour générer les clés, à partir d’une invite de terminal, entrez :
ssh-keygen -t rsa
Cela générera les clés à l’aide de l’algorithme RSA. Au moment d’écrire ces lignes, les clés générées auront 3072 bits. Vous pouvez modifier le nombre de bits en utilisant l’option -b
. Par exemple, pour générer des clés avec 4096 bits, vous pouvez faire:
ssh-keygen -t rsa -b 4096
Pendant le processus, un mot de passe vous sera demandé. Appuyez simplement sur Entrée lorsque vous êtes invité à créer la clé.
Par défaut, la clé publique est enregistrée dans le fichier ~/.ssh/id_rsa.pub
, tandis que ~/.ssh/id_rsa
est la clé privée. Copiez maintenant le fichier id_rsa.pub
sur l’hôte distant et ajoutez-le à ~/.ssh/authorized_keys
en entrant:
ssh-copy-id username@remotehost
Enfin, revérifiez les autorisations sur le fichier authorized_keys
, seul le fichier authorized_keys
l’utilisateur authentifié doit avoir des autorisations de lecture et d’écriture. Si les autorisations ne sont pas correctes, changez-les par:
chmod 600 .ssh/authorized_keys
Vous devriez maintenant pouvoir SSH vers l’hôte sans être invité à entrer un mot de passe.
Importer des clés à partir de serveurs de clés publics
De nos jours, de nombreux utilisateurs ont déjà des clés ssh enregistrées auprès de services tels que launchpad ou github. Ceux-ci peuvent être facilement importés avec:
ssh-import-id <username-on-remote-service>
Le préfixe lp:
est implicite et signifie aller chercher à partir du launchpad, l’alternative gh:
fera que l’outil va chercher à partir de github à la place.
Authentification à deux facteurs avec U2F/FIDO
OpenSSH 8.2 ajout de la prise en charge des périphériques d’authentification matérielle U2F/FIDO. Ces périphériques sont utilisés pour fournir une couche de sécurité supplémentaire en plus de l’authentification par clé existante, car le jeton matériel doit être présent pour terminer l’authentification.
C’est très simple à utiliser et à configurer. La seule étape supplémentaire consiste à générer une nouvelle paire de clés qui peut être utilisée avec le périphérique matériel. Pour cela, il existe deux types de clés qui peuvent être utilisés: ecdsa-sk
et ed25519-sk
. Le premier a un support matériel plus large, tandis que le second pourrait avoir besoin d’un appareil plus récent.
Une fois la paire de clés générée, elle peut être utilisée comme vous utiliseriez normalement tout autre type de clé dans openssh. La seule exigence est que pour utiliser la clé privée, le périphérique U2F doit être présent sur l’hôte.
Par exemple, branchez le périphérique U2F et générez une paire de clés à utiliser avec lui :
$ ssh-keygen -t ecdsa-skGenerating public/private ecdsa-sk key pair.You may need to touch your authenticator to authorize key generation. <-- touch deviceEnter file in which to save the key (/home/ubuntu/.ssh/id_ecdsa_sk): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/ubuntu/.ssh/id_ecdsa_skYour public key has been saved in /home/ubuntu/.ssh/id_ecdsa_sk.pubThe key fingerprint is:SHA256:V9PQ1MqaU8FODXdHqDiH9Mxb8XK3o5aVYDQLVl9IFRo ubuntu@focal
Maintenant, transférez simplement la partie publique sur le serveur à ~/.ssh/authorized_keys
et vous êtes prêt à partir:
$ ssh -i .ssh/id_ecdsa_sk [email protected] user presence for key ECDSA-SK SHA256:V9PQ1MqaU8FODXdHqDiH9Mxb8XK3o5aVYDQLVl9IFRo <-- touch deviceWelcome to Ubuntu Focal Fossa (GNU/Linux 5.4.0-21-generic x86_64)(...)[email protected]:~$