Comment s'authentifier sur SSH avec des clés au lieu de mots de passe

SSH est un excellent moyen d'accéder à distance à votre ordinateur. Lorsque vous ouvrez les ports sur votre routeur (le port 22 pour être exact), vous pouvez non seulement accéder à votre serveur SSH depuis votre réseau local, mais depuis n'importe où dans le monde.

SSH est un excellent moyen d'accéder à distance à votre ordinateur.  Lorsque vous ouvrez les ports sur votre routeur (le port 22 pour être exact), vous pouvez non seulement accéder à votre serveur SSH depuis votre réseau local, mais depuis n'importe où dans le monde.
Publicité

Comment s'authentifier sur SSH avec des clés au lieu de la clé de mots de passe SSH est un excellent moyen d'accéder à distance à votre ordinateur. Similaire au FTP, vous pouvez vous connecter via SSH FTP Qu'est-ce SSH et comment il est différent de FTP [Technologie expliquée] Qu'est-ce que SSH est et comment il est différent de FTP [Technologie expliquée] Lire la suite pour obtenir un accès sécurisé à un serveur de fichiers Transferts de fichiers Master Client FTP sur tous vos sites avec FileZilla Transferts de fichiers FTP Master sur tous vos sites avec FileZilla Un grand nombre de clients FTP d'antan ont eu un hoquet quand il s'agissait de transferts de fichiers volumineux. Les applications ont connu les délais d'attente habituels que vous attendez lorsque l'ordinateur est là pour 15 ... Lire la suite, accéder rapidement à des fichiers distants, ou même monter un disque réseau sur votre ordinateur. Mais SSH ne se limite pas à l'accès aux fichiers à distance. La connexion via SSH dans Terminal (ou en utilisant PuTTY sous Windows) vous donne accès à un shell distant (après tout, SSH est l'abréviation de Secure SHell). C'est comme ça que je gère mon serveur multimédia à distance.

Lorsque vous ouvrez les ports Qu'est-ce que le transfert de port et comment cela peut-il m'aider? [MakeUseOf explique] Qu'est-ce que le transfert de port et comment cela peut-il m'aider? [MakeUseOf Explains] Pleurez-vous un peu à l'intérieur quand quelqu'un vous dit qu'il y a un problème de redirection de port et que votre nouvelle application brillante ne fonctionnera pas? Votre Xbox ne vous laissera pas jouer à des jeux, vos téléchargements de torrents refusent ... Lisez plus sur votre routeur (le port 22 pour être exact) vous pouvez non seulement accéder à votre serveur SSH depuis votre réseau local, mais partout dans le monde.

Cependant, vous ne voulez pas risquer d'utiliser un mot de passe faible pour l'authentification. Si quelqu'un accède à votre ordinateur via SSH, il obtient un accès complet au shell. Juste pour être clair, ce n'est pas quelque chose que nous voulons. Heureusement, il est très facile de configurer votre serveur SSH global de manière très sécurisée en utilisant l'authentification par clé et en désactivant l'authentification par mot de passe sur votre serveur.

Est-ce pour moi?

Il est tentant de se relâcher avec la sécurité personnelle. Si vous utilisez le serveur pour des raisons privées, vous pourriez penser que les gens ne connaissent tout simplement pas votre serveur et n'essaieront donc pas de le pirater - la sécurité par l'obscurité. Ce serait une très mauvaise hypothèse. Comme le trafic SSH (le plus important) est transmis sur le port 22, les attaquants vérifient régulièrement la visibilité du port 22 sur des adresses IP aléatoires, suivie d'une attaque par force brute. C'est l'une des façons dont les botnets sont conçus pour les attaques DDOS. Qu'est-ce qu'une attaque DDoS? [MakeUseOf explique] Qu'est-ce qu'une attaque DDoS? [MakeUseOf explique] Le terme DDoS siffle quand le cyber-activisme se dresse en masse. Ces types d'attaques font les manchettes internationales pour de multiples raisons. Les problèmes qui déclenchent ces attaques DDoS sont souvent controversés ou fortement ... Lire la suite.

Pour faire une histoire courte: si vous diffusez votre serveur SSH sur Internet (c'est-à-dire le port de transfert 22), alors oui, ceci est pour vous.

L'idée des connexions SSH basées sur des clés

Les connexions SSH basées sur des clés reposent sur l'idée de la cryptographie à clé publique. Il nous faudrait aller trop loin pour expliquer les subtilités, mais nous essaierons de brosser un tableau simple de ce qui se passe dans les coulisses.

Dans le processus ci-dessous, votre ordinateur client génère deux clés: une clé publique et une clé privée. L'idée générale est que vous pouvez crypter des données avec la clé publique, mais seulement décrypter avec la clé privée. Nous allons mettre la clé publique sur le serveur et lui demander de crypter toutes les communications sortantes avec le serveur. Cela garantit que seuls les clients avec la clé privée peuvent déchiffrer et lire les données.

1. Installez OpenSSH

Tout d'abord, nous allons configurer un serveur SSH en utilisant OpenSSH. Si vous avez déjà un serveur SSH en cours d'exécution et que vous voulez simplement savoir comment configurer l'authentification par clé, vous pouvez ignorer cette étape. Utilisez votre gestionnaire de paquets favori pour installer l'application serveur OpenSSH. La méthode la plus simple consiste peut-être à exécuter la commande apt-get à partir du terminal.

sudo apt-get install openssh-server

Entrez votre mot de passe, confirmez et attendez une minute pour terminer l'installation. Félicitations, vous avez maintenant un serveur SSH. (C'était facile!)

ubuntu-install-openssh

Vous pouvez soit utiliser l'application telle quelle, soit éditer /etc/ssh/sshd_config pour la configurer. Exécutez la commande man sshd_config dans Terminal pour obtenir plus d'informations. Une autre excellente ressource pour en savoir plus sur OpenSSH est la page d'aide d'Ubuntu.

2. Générer des clés

Nous allons générer un ensemble de clés. Exécutez les commandes suivantes (adaptées à partir de la page d'aide OpenSSH / Keys Ubuntu).

mkdir ~/.ssh
chmod 700 ~/.ssh
ssh-keygen -t rsa

La première commande crée un répertoire caché '.ssh' dans votre dossier de départ, la deuxième commande modifie les permissions d'accès du dossier tandis que la troisième commande génère un ensemble de clés RSA. Il vous sera d'abord demandé un emplacement pour enregistrer les clés (laissez vide et appuyez sur Entrée pour enregistrer dans l'emplacement par défaut) et une seconde pour une phrase secrète.

Cette phrase secrète crypte davantage la clé privée stockée sur votre ordinateur, ce qui vous donne plus de temps pour sécuriser le serveur SSH si votre clé privée est volée. Assurez-vous de choisir une phrase secrète dont vous vous souvenez, car vous devrez l'entrer lorsque vous essaierez d'utiliser votre clé.

3. Transférer la clé publique

Ensuite, vous devrez transférer la clé publique générée à l'étape précédente vers l'ordinateur serveur SSH. Si votre machine client fonctionne également sous Linux, cela peut être réalisé très facilement en exécutant la commande ci-dessous (en remplaçant le nom d'utilisateur et l'adresse IP sur votre serveur SSH).

ssh-copy-id @

Si votre client ne supporte pas la commande ssh-copy-id, vous pouvez utiliser la commande below à la place. C'est un peu plus compliqué, mais obtient essentiellement les mêmes résultats.

cat ~/.ssh/id_rsa.pub | ssh @ "mkdir ~/.ssh; cat>>~/.ssh/authorized_keys"

Vous serez invité à entrer le mot de passe de l'utilisateur pour le serveur SSH. Si les commandes s'exécutent sans erreur, votre clé publique aura été copiée sur le serveur.

4. Désactiver l'authentification par mot de passe

Notez que votre système n'est toujours pas plus sécurisé qu'après la première étape. Bien qu'au moins un client soit configuré pour utiliser l'authentification par clé, les autres clients peuvent toujours se connecter avec un mot de passe. Pour finir, nous désactiverons complètement l'authentification par mot de passe. Après cette étape, seuls les ordinateurs ayant suivi le processus ci-dessus peuvent se connecter à votre serveur SSH.

Pour désactiver l'authentification par mot de passe, éditez le fichier /etc/ssh/sshd_config dans votre éditeur favori. L'un des moyens les plus simples d'éditer un fichier restreint est, encore une fois, d'utiliser Terminal. (Je suis partial à nano, mais vous pouvez utiliser ce que vous êtes le plus à l'aise.)

sudo nano /etc/ssh/sshd_config

Environ 40 lignes à partir du bas du fichier, vous trouverez

#PasswordAuthentication yes

Supprimez le signe numérique (#) et modifiez le réglage sur "non", comme ci-dessous.

PasswordAuthentication no

Le fichier final devrait ressembler à ceci:

sshd_config

Enregistrez le fichier en appuyant sur CTRL + X. Confirmez l'édition et le nom de fichier, et vous avez presque terminé. Redémarrez simplement le serveur SSH pour l'exécuter avec ces nouveaux paramètres.

sudo restart ssh

Vous remarquerez également que votre client cessera de demander la phrase secrète pour déchiffrer votre clé si l'authentification par mot de passe est désactivée sur le serveur. Maintenant que vous avez un serveur SSH sécurisé, comment avez-vous l'intention de l'utiliser? En tant que serveur de fichiers sécurisé, shell distant ou pour transférer d'autres services via SSH? Faites-nous savoir dans la section commentaires ci-dessous!

Crédit d'image: Shutterstock

In this article