SSH sur un serveur Linux
SSH, également connu sous le nom de secure shell, est un protocole qui peut être utilisé pour se connecter et communiquer avec un serveur. Vous pouvez vous connecter à votre serveur Linux pour une session de terminal en utilisant ce protocole chiffré. Si vous utilisez un serveur OpenSSH, il existe principalement deux manières différentes de procéder au processus d'authentification. La première est votre authentification standard par mot de passe. Ici, vous utilisez simplement vos identifiants de nom d'utilisateur et de mot de passe pour accéder à votre compte. L'autre méthode consiste à configurer votre serveur Linux pour une authentification par clé SSH.
Dans ce guide, nous nous concentrerons sur la manière dont vous pouvez configurer votre serveur Linux pour utiliser des clés SSH comme moyen principal d'authentification. Nous verrons également pourquoi les clés SSH sont souvent préférées au mécanisme habituel de protection par mot de passe.
Que sont les clés SSH ?
Les clés SSH sont similaires aux identifiants que vous utiliseriez pour vous connecter à votre compte sur le serveur. Au lieu de saisir votre nom d'utilisateur et votre mot de passe, vous utilisez la paire de clés SSH, qui est également un identifiant d'accès. Bien que les clés soient cryptographiques, vous devez les traiter comme des identifiants d'authentification car c'est la fonction qu'elles remplissent.
Une clé SSH typique comporte deux parties : une clé autorisée et une clé d'identité. La clé autorisée est la clé publique qui fonctionne en combinaison avec votre clé d'identité privée pour vous donner accès au compte. La clé publique est située sur le serveur distant auquel vous souhaitez vous connecter en SSH et reste dans le fichier ~/.ssh/authorized_keys associé à votre compte utilisateur. Les clés d'identité servent à vérifier votre identité en tant qu'utilisateur légitime afin de garantir que seul le personnel autorisé peut accéder au compte donné. Collectivement, ces clés sont appelées clés utilisateur car elles authentifient l'identité de l'utilisateur. Une fois que le serveur est capable de vérifier les deux clés, une session shell est initiée afin d'exécuter vos commandes.
Vous disposez également de clés d'hôte et de clés de session. Le protocole authentifie l'ordinateur local, le système ou le serveur à l'aide de la clé d'hôte. Les clés de session permettent de chiffrer le flux de données sur la connexion. Cela rend votre session et l'activité correspondante beaucoup plus sûres et sécurisées.
Les clés SSH plutôt que la protection par mot de passe
La principale raison pour laquelle l'authentification par clé SSH est préférable à la protection par mot de passe est que cette dernière peut vous rendre vulnérable aux cyberattaques. La plupart des individus n'utilisent pas de mots de passe extrêmement complexes afin de pouvoir s'en souvenir lorsqu'ils doivent se connecter. Par conséquent, cela crée une zone de vulnérabilité. De nombreux attaquants utilisent la force brute pour casser le mot de passe relativement simple et s'introduire dans le compte. C'est devenu particulièrement facile de nos jours en raison de l'automatisation et des technologies de piratage avancées.
Les clés SSH, en revanche, offrent un moyen beaucoup plus sécurisé d'accéder à votre compte. Comme nous l'avons mentionné précédemment, cette méthode utilise une clé publique et une clé privée pour authentifier l'identité d'un client. Bien que vous puissiez partager la clé publique avec n'importe qui, vous devez garder la clé privée secrète. Lorsqu'elles sont associées, la clé publique déchiffre la clé privée pour authentifier votre identité. De plus, vous pouvez renforcer la protection en ajoutant une phrase secrète par-dessus la paire de clés. Nous reparlerons de la phrase secrète plus loin dans ce guide. Cependant, même sans phrase secrète, votre clé SSH privée est conservée de manière extrêmement sûre sur votre ordinateur local. Le réseau n'est jamais en mesure d'accéder directement à la clé, qui se trouve dans un répertoire restreint et bénéficie de permissions restreintes.
Génération de clés SSH
Pour générer votre paire de clés SSH, vous devez parcourir la suite d'outils OpenSSH et localiser ssh-keygen. Il s'agit d'un outil utilitaire spécial qui vous permet de générer une paire de clés SSH d'environ 2048 bits. Commencez par exécuter cette commande :
|
1 |
ssh-keygen |
Cela affichera le message suivant :
|
1 2 |
Génération publique/privée rsa clé paire. Entrez fichier dans lequel pour sauvegarder la clé (/home/username/.ssh/id_rsa): |
Le message générera une clé privée nommée id_rsa et une clé publique nommée id_rsa.pub. À ce stade, vous pouvez choisir l'emplacement de la clé. Nous vous recommandons de conserver l'emplacement par défaut en appuyant sur Entrée. Conserver l'emplacement par défaut garantit que le serveur localisera et vérifiera automatiquement les clés chaque fois que vous vous connecterez à l'aide de ce système. L'emplacement par défaut est le répertoire ~/.ssh dans le répertoire personnel. Si vous préférez choisir un autre emplacement, saisissez-le.
Réécriture des clés SSH plus anciennes
Il est important de noter que vous ne pouvez avoir qu'une seule paire de clés SSH sur votre système à la fois. Cela signifie que si vous avez déjà généré et enregistré une paire de clés sur le système, vous verrez le message suivant :
|
1 2 |
/home/username/.ssh/id_rsa déjà existe. Écraser (o/n)? |
Pour continuer à créer et à enregistrer votre nouvelle paire de clés SSH, vous devez supprimer celle existante. Attention : si vous écrasez la clé déjà enregistrée sur le disque, vous ne pourrez plus l'utiliser à des fins d'authentification. Il s'agit d'un processus irréversible, assurez-vous donc d'être absolument certain de vouloir écraser l'ancienne paire de clés.
Définir une phrase de passe
Une fois que vous aurez configuré les clés dans le répertoire, il vous sera demandé si vous souhaitez fournir une phrase de passe :
|
1 2 3 |
Créé répertoire '/home/username/.ssh'. Saisissez phrase de passe (vide pour aucune phrase de passe): Saisissez la même phrase de passe à nouveau: |
La phrase de passe est facultative - vous pouvez choisir de l'ignorer. Cependant, elle ajoute une couche de sécurité supplémentaire pour votre clé privée en la chiffrant sur le disque. Si vous choisissez d'utiliser une phrase de passe, vous devrez la saisir correctement à chaque fois que vous tenterez de vous connecter à l'aide de cette paire de clés SSH :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Votre identification a été enregistrée dans /home/username/.ssh/id_rsa. Votre publique clé a été enregistrée dans /home/username/.ssh/id_rsa.pub. L'clé empreinte est: a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 username@remote_host L'clé'de la randomart image est: +--[ RSA 2048]----+ | ..o | | E o= . | | o. o | | .. | | ..S | | o o. | | =o.+. | |. =++.. | |o=++. | +-----------------+ |
Enfin, vous devriez maintenant disposer de vos clés SSH que vous pouvez utiliser pour authentifier le client.
Intégration de votre clé SSH dans votre compte de serveur
Avant d'utiliser les clés pour l'authentification, vous devez intégrer la clé publique sur le serveur Linux distant. Ensuite, nous vous montrerons comment procéder lors de la création de votre serveur CloudSigma. Tout d'abord, vous devez trouver votre clé SSH publique afin de pouvoir la copier et la coller. Si vous avez utilisé la méthode ci-dessus pour générer votre paire de clés SSH, vous pouvez trouver la clé publique en saisissant ce qui suit :
|
1 |
cat ~/.ssh/id_rsa.pub |
Cela affichera la clé SSH publique comme ceci :
|
1 |
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDNqqi1mHLnryb1FdbePrSZQdmXRZxGZbo0gTfglysq6KMNUNY2VhzmYN9JYW39yNtjhVxqfW6ewc+eHiL+IRRM1P5ecDAaL3V0ou6ecSurU+t9DR4114mzNJ5SqNxMgiJzbXdhR+j55GjfXdk0FyzxM3a5qpVcGZEXiAzGzhHytUV51+YGnuLGaZ37nebh3UlYC+KJev4MYIVww0tWmY+9GniRSQlgLLUQZ+FcBUjaqhwqVqsHe4F/woW1IHe7mfm63GXyBavVc+llrEzRbMO111MogZUcoWDI9w7UIm8ZOTnhJsk7jhJzG2GpSXZHmly/a/buFaaFnmfZ4MYPkgJD username@example.com |
Copiez cette valeur pour l'utiliser plus tard. Lors de la création d'un serveur avec CloudSigma, vous avez la possibilité d'ajouter une clé SSH après avoir sélectionné la taille du serveur et l'image du système d'exploitation :

Cliquez sur Ajouter et collez ce que vous avez copié pour intégrer la clé SSH dans votre serveur. Par conséquent, chaque fois que vous démarrerez votre serveur, il disposera déjà de la clé SSH injectée.
Copier une clé publique vers un serveur existant
Bien que la méthode ci-dessus fonctionne lors de la création d'un nouveau serveur, est-il possible d'intégrer une clé SSH dans un serveur existant ? La réponse est oui, et il existe plusieurs façons de procéder en fonction des outils dont vous disposez.
Utilisation de SSH-Copy-ID
C'est le moyen le plus simple et le plus facile de copier une clé publique. Tout ce dont vous avez besoin est de l'outil utilitaire ssh-copy-id que vous trouverez dans la suite OpenSSH standard. Mais avant de mettre cette méthode en pratique, assurez-vous que l'authentification par mot de passe est activée sur votre serveur. Pour copier la clé, vous appliquerez la syntaxe ssh-copy-id puis saisirez l'hôte distant auquel vous souhaitez vous connecter. Vous devrez également spécifier le compte auquel vous vous connectez. Vous devez disposer d'un accès par mot de passe au compte, afin que votre clé soit copiée au bon endroit. La commande devrait ressembler à ceci :
|
1 |
ssh-copy-id nom_utilisateur@hôte_distant |
Cela peut entraîner l'apparition d'un message comme le suivant sur votre écran :
|
1 2 3 |
L'authenticité de l'hôte '111.111.11.111 (111.111.11.111)' ne peut'pas être établie. ECDSA clé empreinte est fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Êtes-vous sûr de vouloir continuer la connexion (oui/non)? oui |
Cela se produit généralement s'il s'agit de votre première connexion à cet hôte distant particulier. Cela signifie simplement que l'ordinateur n'a pas réussi à reconnaître l'hôte. Tout ce que vous avez à faire est de taper « yes » et d'appuyer sur Entrée. Une fois cela fait, l'outil analysera le compte pour trouver votre clé publique. Après l'avoir localisée, il vous demandera de saisir le mot de passe de votre compte :
|
1 2 3 |
/usr/bin/ssh-copy-id: INFO: tentative de se connecter avec la nouvelle clé clé(s), pour filtrer ceux qui sont déjà installésinstallés /usr/bin/ssh-copy-id: INFO: 1 clé(s) reste à être installée -- si vous êtes invité maintenant il est pour installer les nouvelles clés nom_utilisateur@111.111.11.111's mot de passe: |
Ensuite, vous pouvez saisir votre mot de passe. Lorsque vous êtes connecté à votre compte, l'outil copiera le contenu de la clé ~/.ssh/id_rsa.pub et le collera sous authorized_keys dans le répertoire ~/.ssh de votre compte distant. Vous verrez alors le message suivant :
|
1 2 3 |
Nombre de clé(s) ajoutée: 1 Maintenant essayez connexion dans la machine, avec: "ssh 'nom_utilisateur@111.111.11.111'" et vérifier pour vous assurer que seule la clé(s) vous vouliez ont été ajoutées. |
Cela signifie que vous avez copié avec succès votre clé publique sur votre serveur distant existant.
Utilisation de SSH
Il s'agit d'une méthode plutôt conventionnelle pour copier votre clé publique sur un serveur. Il est préférable de l'utiliser si vous n'avez pas accès à l'outil ssh-copy-id. Là encore, vous devez disposer d'un accès par mot de passe à votre compte. Ce que vous faites essentiellement, c'est afficher le contenu de la clé publique sur votre ordinateur et le transférer vers le serveur distant via la connexion SSH établie entre eux. La commande que vous utiliserez à cette fin doit être la suivante :
|
1 |
cat ~/.ssh/id_rsa.pub | ssh nom_utilisateur@hôte_distant "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys" |
Comme vous pouvez le voir, nous avons spécifié que la clé doit être placée dans le fichier authorized_keys du répertoire ~/.ssh sur le serveur. L'utilisation du symbole >> garantit également que nous ajoutons des clés au lieu de les écraser. Après avoir exécuté la commande, vous pouvez voir ce message :
|
1 2 3 |
L'authenticité de l'hôte '111.111.11.111 (111.111.11.111)' ne peut 'pas être établie. ECDSA clé empreinte est fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Êtes-vous sûr de vouloir continuer à vous connecter (oui/non)? oui |
De même que pour le message précédent, cela signifie que l'ordinateur n'a pas reconnu l'hôte distant. Saisissez « yes » et appuyez sur Entrée pour continuer. Maintenant, vous allez saisir le mot de passe du compte :
|
1 |
username@111.111.11.111'de mot de passe: |
Une fois le mot de passe vérifié, la clé sera copiée dans un fichier de votre compte utilisateur comme spécifié.
Manuellement
Si vous ne disposez pas d'un accès par mot de passe à votre compte sur le serveur distant, vous pouvez copier la clé publique manuellement. Le but est de transférer la valeur du fichier id_rsa.pub dans le fichier ~/.ssh/authorized_keys de votre appareil distant. Comme nous le savons déjà, nous pouvons visualiser la valeur de la clé id_rsa.pub en utilisant cette commande :
|
1 |
cat ~/.ssh/id_rsa.pub |
Le contenu de votre clé publique SSH apparaîtra comme ceci :
|
1 |
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== demo@test |
Ensuite, vous devez accéder à votre compte sur l'hôte distant par tous les moyens disponibles. Une fois connecté, vérifiez que le répertoire ~/.ssh est présent. Si ce n'est pas le cas, vous pouvez exécuter la commande suivante pour le créer :
|
1 |
mkdir -p ~/.ssh |
Maintenant, vous pouvez utiliser cette commande pour ajouter le contenu du fichier id_rsa.pub au fichier authorized_keys dans ce répertoire ~/.ssh sur le serveur distant :
|
1 |
echo chaîne_clé_publique >> ~/.ssh/authorized_keys |
Au lieu de saisir « public_key_string » dans cette commande, vous devrez entrer le contenu de la clé que vous avez extraite en exécutant la commande cat ~/.ssh/id_rsa.pub précédemment.
Authentification avec votre clé SSH
Maintenant, vous pouvez facilement accéder à votre compte en utilisant uniquement vos clés SSH. Cela signifie que vous n'avez plus besoin de votre mot de passe pour accéder à votre compte de serveur. Vous utiliserez les identifiants que vous utilisez habituellement pour vous connecter :
|
1 |
ssh username@remote_host |
Cela peut faire apparaître le message suivant :
|
1 2 3 |
L'authenticité de l'hôte '111.111.11.111 (111.111.11.111)' ne peut'pas être établie. ECDSA clé empreinte est fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Êtes-vous sûr de vouloir continuer à vous connecter (yes/no)? yes |
Ne vous inquiétez pas si vous voyez ce message. Cela signifie simplement que le système local n'est pas en mesure de reconnaître l'hôte distant. Cela se produit généralement si vous vous connectez à l'hôte pour la toute première fois. Tout ce que vous avez à faire est de taper « yes » et d'appuyer sur Entrée. Pour revenir à certaines des étapes précédentes, si vous avez appliqué une phrase de passe, c'est ici que vous devrez la saisir. Si vous ne l'avez pas fait, vous vous connecterez directement à votre compte après l'authentification des clés SSH. Cela déclenchera l'ouverture d'une nouvelle session de shell via votre compte actuel sur l'ordinateur local.
Comment désactiver l'authentification par mot de passe sur votre serveur ?
Maintenant que vous savez comment configurer vos clés SSH, vous devez désactiver l'authentification par mot de passe. Même si vous pouvez utiliser les clés SSH pour l'authentification, vous restez vulnérable aux attaques par force brute si votre processus d'authentification par mot de passe est actif. Avant de désactiver le mécanisme d'authentification par mot de passe, assurez-vous que la configuration de l'authentification par clé SSH concerne le compte root sur le serveur ou que le compte configuré dispose d'un accès sudo. La raison de cette vérification est de vous assurer que vous conservez un accès administratif au compte même lorsque les mots de passe sont désactivés. Vous pouvez maintenant utiliser cette clé SSH pour vous connecter à votre compte de serveur. L'étape suivante consiste à ouvrir le fichier de configuration du démon SSH :
|
1 |
sudo nano /etc/ssh/sshd_config |
Ici, vous devez rechercher la directive suivante :
|
1 |
PasswordAuthentication |
Vous devez décommenter cette ligne et changer la valeur en « no », comme suit :
|
1 |
PasswordAuthentication no |
Cela désactivera l'authentification par mot de passe. Enregistrez simplement le fichier et fermez-le lorsque vous avez terminé. Enfin, vous devez redémarrer votre appareil pour appliquer les modifications. Si vous utilisez un appareil Ubuntu ou Debian, vous pouvez également utiliser la commande suivante pour désactiver l'accès par mot de passe :
|
1 |
sudo service ssh restart |
Pour vous assurer que votre démon, ou sshd, n'autorise que l'authentification par SSH sur le serveur sur les machines CentOS ou Fedora, utilisez la commande :
|
1 |
sudo service sshd restart |
Conclusion
Une fois que vous aurez terminé toutes ces étapes, l'authentification par clé SSH devrait être configurée et opérationnelle sur votre serveur. Vous pouvez désormais être assuré que vos serveurs sont sécurisés et protégés !
Bonne informatique !
Commentaires
Aucun commentaire pour l'instant. Soyez le premier.