10.2. Configuration d'OpenSSH
10.2.1. Fichiers de configuration
Il y a deux groupes de fichiers de configuration : pour les programmes clients (c-a-d
ssh
, scp
, et sftp
), et pour les serveurs (le démon sshd
).
Les informations de configuration de SSH à l'échelle du système sont stockées dans le répertoire
/etc/ssh/
comme décrit dans Tableau 10.1, « Fichiers de configuration du système dans son ensemble ». Les informations de configuration spécifiques à l'utilisateur SSH sont stockées dans ~/.ssh/
dans le répertoire d'accueil de l'utilisateur, comme décrit dans Tableau 10.2, « Fichiers de configuration spécifiques à l'utilisateur ».
Fichier | Description |
---|---|
/etc/ssh/moduli | Contient les groupes Diffie-Hellman utilisés pour l'échange de clés Diffie-Hellman, ce qui est essentiel pour la création d'une couche de transport sécurisé. Lorsque les clés sont échangées au début d'une session SSH, une valeur partagée, secrète est alors créée ne pouvant être déterminée par l'une des parties seule. Cette valeur est ensuite utilisée pour fournir une authentification de l'hôte. |
/etc/ssh/ssh_config | Le fichier de configuration du client SSH par défaut. Notez qu'il sera remplacé par ~/.ssh/config si ce fichier existe. |
/etc/ssh/sshd_config | Le fichier de configuration du démon sshd . |
/etc/ssh/ssh_host_ecdsa_key | La clé ECDSA privée utilisée par le démon sshd . |
/etc/ssh/ssh_host_ecdsa_key.pub | La clé ECDSA publique 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 protocole SSH. |
/etc/ssh/ssh_host_key.pub | La clé publique RSA utilisée par le démon sshd pour la version 1 du protocole SSH. |
/etc/ssh/ssh_host_rsa_key | La clé privée RSA utilisée par le démon sshd pour la version 2 du protocole SSH. |
/etc/ssh/ssh_host_rsa_key.pub | La clé publique RSA utilisée par le démon sshd pour la version 2 du protocole SSH. |
/etc/pam.d/sshd | Le fichier de configuration AM du démon sshd . |
/etc/sysconfig/sshd | Fichier de configuration du service sshd . |
Fichier | Description |
---|---|
~/.ssh/authorized_keys | Contient une liste des clés publiques autorisées pour les serveurs. Quand le client se connecte à un serveur, le serveur authentifie le client en vérifiant sa clé publique stockée dans ce fichier. |
~/.ssh/id_ecdsa | Contient la clé privée ECDSA de l'utilisateur |
~/.ssh/id_ecdsa.pub | Le clé publique de l'utilisateur. |
~/.ssh/id_rsa | La clé privée RSA utilisée par ssh pour la version 2 du protocole SSH. |
~/.ssh/id_rsa.pub | La clé publique RSA utilisée par ssh pour la version 2 du protocole SSH. |
~/.ssh/identity | La clé privée RSA utilisée par ssh pour la version 1 du protocole SSH. |
~/.ssh/identity.pub | La clé publique RSA utilisée par ssh pour la version 1 du protocole SSH. |
~/.ssh/known_hosts | Contient les clés hôtes des serveurs SSH auquels l'utilisateur a accès. Ce fichier est important pour s'assurer que le client SSH est connecté au bon serveur SSH. |
Pour obtenir des informations sur les différentes directives qui peuvent être utilisées par les fichiers de configuration SSH, voir les pages man
ssh_config
(5) et sshd_config
(5).
10.2.2. Démarrage d'un serveur OpenSSH
Pour pouvoir exécuter un serveur OpenSSH, vous devez avoir le paquet openssh-server installé. Pour obtenir plus d'informations sur la façon d'installer des nouveaux paquets, voir Section 8.2.4, « Installation de paquets ».
Pour démarrer le démon
sshd
dans la session actuelle, veuillez saisir ce qui suit dans l'invite de shell en tant qu'utilisateur root
:
~]# systemctl start sshd.service
Pour stopper le démon
sshd
dans la session actuelle, veuillez saisir ce qui suit dans l'invite de shell en tant qu'utilisateur root
:
~]# systemctl stop sshd.service
Si vous souhaitez que le démon démarre automatiquement, saisir en tant qu'utilisateur
root
:
~]# systemctl enable sshd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/sshd.service to /usr/lib/systemd/system/sshd.service.
Le démon
sshd
dépend de l’unité cible network.target
, ce qui suffit pour les interfaces réseau configuré statique et pour les options par défaut ListenAddress
0.0.0.0
. Pour spécifier des adresses différentes dans la directive ListenAddress
et utiliser une configuration de réseau dynamique plus lente, ajouter la dépendance sur l’unité cible de network-online.target
dans le fichier d'unité de sshd.service
. Pour ce faire, créez le fichier /etc/systemd/system/sshd.service.d/local.conf
avec les options suivantes :
[Unit] Wants=network-online.target
After=network-online.target
Ensuite, charger à nouveau la configuration du gestionnaire
systemd
par la commande suivante :
~]# systemctl daemon-reload
Pour obtenir davantage d'informations sur la manière de gérer les services système sur Red Hat Enterprise Linux 7, veuillez consulter le Chapitre 9, Gérer les services avec systemd.
Notez que si vous réinstallez le système, un nouvel ensemble de clés d'identification sera créé. Ainsi, les clients qui étaient connectés au système avec les outils d'OpenSSH avant la réinstallation verront le message suivant s'afficher :
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the RSA host key has just been changed.
Pour éviter cela, vous pouvez sauvegarder les fichiers qui conviennent à partir du répertoire
/etc/ssh/
. Voir Tableau 10.1, « Fichiers de configuration du système dans son ensemble » pour une liste complète, et restaurez les fichiers à chaque fois que vous réinstallez le système.
10.2.3. Utilisation nécessaire de SSH pour les connexions à distance
Pour que SSH soit vraiment efficace, les protocoles de connexions non sécurisées sont à proscrire. Sinon, un mot de passe d'utilisateur peut-être protégé par SSH pour une seule session, et ne sera capturé que plus tard avec Telnet. Certains services à désactiver sont
telnet
, rsh
, rlogin
et vsftpd
.
Pour obtenir davantage d'informations sur la manière de configurer le service
vsftpd
, voir Section 14.2, « FTP ». Pour savoir comment gérer les services système, consulter Chapitre 9, Gérer les services avec systemd.
10.2.4. Authentification basée clés
Pour améliorer encore davantage la sécurité système, créer des paires de clés SSH et puis exécuter l'authentification basée clés en désactivant l'authentification de mot de passe. Pour ce faire, ouvrez le fichier
/etc/ssh/sshd_config
dans un éditeur de texte comme vi ou nano et modifiez l'option PasswordAuthentication
comme suit :
PasswordAuthentication no
Si vous travaillez sur un système différent de celui de la nouvelle installation par défaut, vérifiez que
PubkeyAuthentication no
n'ait pas été défini. Si connecté à distance, ne pas utiliser l'accès console ou out-of-band, il est conseillé de tester le processus de journalisation basé clé avant de désactiver l'authentification de mot de passe.
Pour pouvoir utiliser
ssh
, scp
, ou sftp
pour se connecter au serveur à partir d'une machine client, créer une paire de clé d'autorisation en suivant les étapes suivantes. Notez que les clés doivent être créées séparemment pour chaque utilisateur.
Red Hat Enterprise Linux 7 utilise SSH Protocol 2 et les clés RSA par défaut (voir Section 10.1.3, « Versions de protocole » pour plus d'informations).
Important
Si vous complétez les étapes en tant qu'utilisateur
root
, seul root
pourra utiliser les clés.
Note
Si vous réinstallez votre système et que vous souhaitez garder des paires de clés générées auparavant, sauvegarder le répertoire
~/.ssh/
. Après avoir réinstallé, recopiez-le sur votre répertoire personnel. Ce processus peut être fait pour tous les utilisateurs sur votre système, y compris l'utilisateur root
.
10.2.4.1. Création de paires de clés
Suivez les étapes indiquées ci-dessous afin de créer une paire de clés DSA pour la version 2 du protocole SSH.
- La mise à jour d'un paquet est semblable à son installation. Saisir la commande suivante à l'invite du shell :
~]$
ssh-keygen -t rsa
Création de la paire de clés publique/privée. Saisir le fichier dans lequel sauvegarder la clé (/home/USER/.ssh/id_rsa): - Appuyer sur la touche Entrée pour confirmer le chemin d'accès par défaut ,
~/.ssh/id_rsa
, pour la clé nouvellement créée. - Saisissez une phrase de passe, et confirmez-là en la saisissant à nouveau quand on vous le demande. Pour des raisons de sécurité, évitez d'utiliser le même mot de passe que celui que vous aurez utilisé quand vous vous êtes connecté à votre compte.Après cela, vous verrez un message semblable à celui-ci :
Your identification has been saved in /home/USER/.ssh/id_rsa. Your public key has been saved in /home/USER/.ssh/id_rsa.pub. The key fingerprint is: e7:97:c7:e2:0e:f9:0e:fc:c4:d7:cb:e5:31:11:92:14 USER@penguin.example.com The key's randomart image is: +--[ RSA 2048]----+ | E. | | . . | | o . | | . .| | S . . | | + o o ..| | * * +oo| | O +..=| | o* o.| +-----------------+
- Par défaut, les permissions du répertoire
~/.ssh/
sont définies àrwx------
ou700
exprimées en notation octale. Ceci est pour s'assurer que l'utilisateur USER puisse voir les contenus. Si cela est nécessaire, on peut le confirmer par la commande suivante :~]$
ls -ld ~/.ssh
drwx------. 2 USER USER 54 Nov 25 16:56 /home/USER/.ssh/ - Pour copier une clé publique dans une machine distante, lancer la commande dans le format suivant :
ssh-copy-id user@hostname
~/.ssh/id*.pub
qui a été modifiée le plus récemment si elle n'a pas encore été installée. Sinon, indiquer le nom du fichier de clés publiques comme suit :
Cela aura pour effet de copier le contenu dessh-copy-id -i
~/.ssh/id_rsa.pub
user@hostname~/.ssh/id_rsa.pub
dans le fichier~/.ssh/authorized_keys
de la machine sur laquelle vous souhaitez vous connecter. Si le fichier existe déjà, les clés y seront ajoutées.
Suivez les étapes indiquées ci-dessous afin de créer une paire de clés ECDSA pour la version 2 du protocole SSH :
- Pour créer une paire de clés ECDSA, saisir la commande suivante à l'invite du shell :
~]$
ssh-keygen -t ecdsa
Créer une paire de clés publique/privée ecdsa. Saisir le fichier dans lequel vous souhaitez sauvegarder la clé (/home/USER/.ssh/id_ecdsa): - Appuyer sur la touche Entrée pour confirmer le chemin d'accès par défaut ,
~/.ssh/id_ecdsa
, pour la clé nouvellement créée. - Saisissez une phrase de passe, et confirmez-là en la saisissant à nouveau quand on vous le demande. Pour des raisons de sécurité, évitez d'utiliser le même mot de passe que celui que vous aurez utilisé quand vous vous êtes connecté à votre compte.Après cela, vous verrez un message semblable à celui-ci :
Votre identification a été sauvegardée dans /home/USER/.ssh/id_ecdsa. Votre clé publique a été sauvegardée dans /home/USER/.ssh/id_ecdsa.pub. L'empreinte de la clé est : fd:1d:ca:10:52:96:21:43:7e:bd:4c:fc:5b:35:6b:63 USER@penguin.example.com L'image randomart de la clé est : +--[ECDSA 256]---+ | .+ +o | | . =.o | | o o + ..| | + + o +| | S o o oE.| | + oo+.| | + o | | | | | +-----------------+
- Par défaut, les permissions du répertoire
~/.ssh/
sont définies àrwx------
ou700
exprimées en notation octale. Ceci est pour s'assurer que l'utilisateur USER puisse voir les contenus. Si cela est nécessaire, on peut le confirmer par la commande suivante :~]$
ls -ld ~/.ssh
~]$ ls -ld ~/.ssh/ drwx------. 2 USER USER 54 Nov 25 16:56 /home/USER/.ssh/ - Pour copier une clé publique dans une machine distante, lancer la commande sous le format suivant :
ssh-copy-id USER@hostname
~/.ssh/id*.pub
qui a été modifiée le plus récemment si elle n'a pas encore été installée. Sinon, indiquer le nom du fichier de clés publiques comme suit :
Cela aura pour effet de copier le contenu dessh-copy-id -i
~/.ssh/id_ecdsa.pub
USER@hostname~/.ssh/id_ecdsa.pub
dans le fichier~/.ssh/authorized_keys
de la machine sur laquelle vous souhaitez vous connecter. Si le fichier existe déjà, les clés y seront ajoutées.
Voir Section 10.2.4.2, « Configurer les partages Samba » pour obtenir des informations sur la façon d'installer votre système afin qu'il se souvienne de la phrase de passe.
Important
La clé privée est à but d'utilisation personelle uniquement, et il est important que vous ne la donniez à personne.
10.2.4.2. Configurer les partages Samba
Pour stocker votre mot de passe afin que vous n'ayiez pas à le saisir à chaque fois que vous vous connectez avec une machine distante, vous pouvez utiliser l'agent d'authentification
ssh-agent
. Si vous utilisez GNOME, vous pouvez la configurer pour qu'elle vous demande votre mot de passe chaque fois que vous ouvrez une session et pour qu'elle s'en souvienne tout au cours de la session. Sinon, vous pouvez stocker la phrase de passe pour une invite du shell en particulier.
Pour sauvegarder votre phrase de passe pendant votre session GNOME, suivez les étapes suivantes :
- Assurez-vous de bien avoir le paquet openssh-askpass installé. Sinon, voir Section 8.2.4, « Installation de paquets » pour obtenir plus d'informations sur la façon d'installer de nouveaux paquets dans Red Hat Enterprise Linux.
- Appuyez sur la touche Super pour entrer dans la vue d'ensemble des activités, tapez
Startup Applications
et appuyez sur Entrée. L'outil Startup Applications Preferences s'affiche. L'onglet contenant une liste de programmes de démarrage disponibles s'affichera par défaut. La touche Super apparait dans une variété de formes, selon le clavier et autre matériel, mais souvent en tant que touche Commande ou Windows, généralement à gauche de la barre d'espace.Figure 10.1. Préférences des applications au démarrage
- Cliquer sur le boutonà droite, et saisir
/usr/bin/ssh-add
dans le champ Command.Figure 10.2. Ajouter une nouvelle application
- Cliquer suret vérifiez que la case qui se trouve à côté de l'élément qui vient d'être ajouté est sélectionnée.
Figure 10.3. Activer l'application
- Déconnecter et reconnecter. Une boîte de dialogue apparaîtra pour vous demander de mettre votre phrase de passe. À partir de ce moment, vous ne devriez pas être sollicité de donner un mot de passe par les commandes
ssh
,scp
, ousftp
.Figure 10.4. Saisir une phrase de passe
Afin de sauvegarder votre phrase de passe pour une certaine invite de shell, utilisez la commande suivante :
~]$ ssh-add
Saisir la phrase de passe pour /home/USER/.ssh/id_rsa :
Notez que lorsque vous vous déconnectez, votre phrase de passe sera oubliée. Vous devez exécuter la commande chaque fois que vous vous connectez à une console virtuelle ou à une fenêtre de terminal.