Comment s'authentifier sur SSH avec des clés plutôt que des mots de passe

Comment s'authentifier sur SSH avec des clés plutôt que des mots de passe / Linux

SSH est un excellent moyen d’obtenir un accès à distance à votre ordinateur. Semblable à FTP, vous pouvez vous connecter via SSH FTP Qu'est-ce que SSH est et comment est-il différent de FTP? [Technologie expliquée] Qu'est-ce que SSH est et comment est-il différent de FTP? [Technologie expliqué] Client Master FTP Transferts de fichiers sur tous vos sites avec FileZilla Master FTP Transferts de fichiers sur tous vos sites avec FileZilla Un grand nombre de clients FTP anciens avaient le honte quand il s'agissait de transferts de fichiers volumineux. Les applications ont connu les délais habituels auxquels vous vous attendriez lorsque l'ordinateur y est resté… Read More, en accédant rapidement aux fichiers distants, ou même en montant 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 l’utilisation de PuTTY sous Windows) vous donne un accès distant au shell (après tout, SSH signifie Short SHell). C'est comment je gère mon serveur multimédia à distance.

Lorsque vous ouvrez les ports Qu'est-ce que la redirection de port et comment peut-elle m'aider? [MakeUseOf explique] Qu'est-ce que la redirection de port et comment peut-elle m'aider? [MakeUseOf explique] Pleurez-vous un peu à l'intérieur quand quelqu'un vous dit qu'il y a un problème de transfert de port et que c'est la raison pour laquelle votre nouvelle application brillante ne fonctionnera pas? Votre Xbox ne vous laissera pas jouer à des jeux, vos téléchargements torrent refusent… En savoir plus sur votre routeur (le port 22 pour être exact), vous pouvez non seulement accéder à votre serveur SSH à partir de votre réseau local, mais de 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 faire preuve de laxisme avec la sécurité personnelle. Si vous utilisez le serveur à des fins privées, vous pourriez penser que les gens ne savent tout simplement pas à propos de votre serveur et n'essayent donc pas de le pirater - la sécurité par l'obscurité. Ce serait un très mauvaise hypothèse. Étant donné que la majeure partie du trafic SSH est transmis sur le port 22, les attaquants vérifient régulièrement la visibilité du port 22 sur des adresses IP aléatoires, suivies d'une attaque par force brute. C’est l’un des moyens utilisés par les réseaux de zombies pour les attaques par DDOS. Qu'est-ce qu'une attaque par DDoS? [MakeUseOf explique] Qu'est-ce qu'une attaque DDoS? [MakeUseOf explique] Le terme DDoS siffle à chaque fois que le cyber-activisme surgit en masse. Ce type d'attaques fait les gros titres de la presse internationale pour plusieurs raisons. Les problèmes qui déclenchent ces attaques DDoS sont souvent controversés ou hautement… Read More .

Bref, si vous diffusez votre serveur SSH sur Internet (c'est-à-dire le port de transfert 22), alors oui, c'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. Cela nous prendrait trop de temps pour expliquer les subtilités, mais nous allons essayer 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 chiffrer des données avec la clé publique, mais uniquement les déchiffrer avec la clé privée. Nous allons mettre la clé publique sur le serveur et lui demander de chiffrer toutes les communications sortantes avec elle. Cela garantit que seuls les clients dotés de la clé privée peuvent déchiffrer et lire les données..

1. Installez OpenSSH

Premièrement, nous allons configurer un serveur SSH avec OpenSSH. Si vous avez déjà un serveur SSH en cours d'exécution et que vous voulez juste savoir comment configurer l'authentification par clé, vous pouvez ignorer cette étape. Utilisez votre gestionnaire de paquets préféré pour installer l'application serveur OpenSSH. Le moyen le plus simple pourrait encore être de lancer le apt-get commande depuis le terminal.

sudo apt-get install openssh-server

Entrez votre mot de passe, confirmez et attendez une minute qu'il soit terminé. Félicitations, vous avez maintenant un serveur SSH. (C'était facile!)

Vous pouvez utiliser l’application telle quelle ou modifier / etc / ssh / sshd_config pour le configurer. Exécuter le man sshd_config commande dans Terminal pour obtenir plus d’informations. Une autre ressource intéressante pour en savoir plus sur OpenSSH est la page d'aide pertinente sur 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 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 personnel, la deuxième commande modifie les autorisations d'accès du dossier, tandis que la troisième commande génère en réalité un ensemble de clés RSA. On vous demandera d’abord un emplacement pour enregistrer les clés (laissez le champ vide et appuyez sur entrée pour enregistrer à l’emplacement par défaut), puis pour une phrase secrète..

Cette phrase secrète chiffre davantage la clé privée stockée sur votre ordinateur, ce qui vous laisse essentiellement plus de temps pour sécuriser le serveur SSH en cas de vol de votre clé privée. Assurez-vous de choisir une phrase de passe dont vous vous souviendrez, car vous devrez la saisir lorsque vous essayez d'utiliser votre clé..

3. Transférer la clé publique

Ensuite, vous devrez transférer la clé publique que vous avez générée à l'étape précédente sur l'ordinateur du serveur SSH. Si votre ordinateur client utilise également Linux, vous pouvez le faire très facilement en exécutant la commande ci-dessous (en remplaçant et pour le nom d'utilisateur et l'adresse IP sur votre serveur SSH).

ssh-copy-id @

Si votre client ne prend pas en charge la commande ssh-copy-id, vous pouvez utiliser la commande ci-dessous à la place. C'est un peu plus compliqué, mais donne essentiellement les mêmes résultats.

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

Vous serez invité à saisir 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é, cela laisse toujours de la place pour que les autres clients puissent se connecter avec un mot de passe. Pour finir, nous allons complètement désactiver l’authentification par mot de passe. Après cette étape, seulement 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 / etc / ssh / sshd_config déposer dans votre éditeur préféré. L'un des moyens les plus simples de modifier un fichier restreint consiste à nouveau à utiliser Terminal. (Je suis partial en nano, mais vous pouvez utiliser ce que vous êtes le plus à l'aise.)

sudo nano / etc / ssh / sshd_config

À environ 40 lignes du bas du fichier, vous trouverez

#PasswordAuthentication oui

Supprimez le signe dièse (#) et changez le réglage en 'non', comme ci-dessous.

Authentification par mot de passe non

Le fichier final devrait ressembler à ceci:

Enregistrez le fichier en appuyant sur CTRL + X. Confirmez la modification et le nom du fichier et vous avez presque terminé. Il suffit de redémarrer le serveur SSH pour l'exécuter avec ces nouveaux paramètres.

sudo redémarrer 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 comptez-vous l'utiliser? En tant que serveur de fichiers sécurisé, un 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

En savoir plus sur: la sécurité en ligne, l'accès à distance.