Comment utiliser SSH pour se connecter à un serveur distant

Introduction

L'un des outils essentiels à maîtriser en tant qu'administrateur système est le SSH.

SSH, ou Secure Shell, est un protocole utilisé pour se connecter en toute sécurité à des systèmes distants. C'est le moyen le plus courant d'accéder à des serveurs Linux distants.

Dans ce guide, nous verrons comment utiliser SSH pour se connecter à un système distant.

Syntaxe de base

Pour se connecter à un système distant utilisant SSH, nous utiliserons la commande ssh. La forme la plus élémentaire de la commande est :

  • ssh remote_host

Le remote_host dans cet exemple est l'adresse IP ou le nom de domaine auquel vous essayez de vous connecter.

Cette commande suppose que votre nom d'utilisateur sur le système distant est le même que votre nom d'utilisateur sur votre système local.

Si votre nom d'utilisateur est différent sur le système distant, vous pouvez le spécifier en utilisant cette syntaxe :

Une fois que vous vous êtes connecté au serveur, il peut vous être demandé de vérifier votre identité en fournissant un mot de passe. Plus tard, nous verrons comment générer des clés à utiliser à la place des mots de passe.

Pour quitter la session ssh et revenir dans votre session shell locale, tapez :

  • exit

Comment SSH fonctionne ?

SSH fonctionne en connectant un programme client à un serveur ssh, appelé sshd.

Dans la section précédente, ssh était le programme client. Le serveur ssh fonctionne déjà sur le remote_host que nous avons spécifié.

Sur votre serveur, le sshd devrait déjà fonctionner. Si ce n'est pas le cas, vous devrez peut-être accéder à votre serveur via une console Web ou une console série locale.

Le processus nécessaire pour démarrer un serveur ssh dépend de la distribution de Linux que vous utilisez.

Sur Ubuntu, vous pouvez démarrer le serveur ssh en tapant :

  • sudo systemctl start ssh

Cela devrait démarrer le serveur sshd et vous pourrez alors vous connecter à distance.

Comment configurer SSH

Lorsque vous modifiez la configuration de SSH, vous modifiez les paramètres du serveur sshd.

Dans Ubuntu, le fichier de configuration principal de sshd se trouve à /etc/ssh/sshd_config.

Sauvegardez la version actuelle de ce fichier avant de l'éditer :

  • sudo cp /etc/ssh/sshd_config{,.bak}

Ouvrez-le avec un éditeur de texte :

  • sudo nano /etc/ssh/sshd_config

Il est préférable de laisser de côté la plupart des options de ce dossier. Cependant, il y en a quelques-uns que vous voudrez peut-être examiner :

/etc/ssh/sshd_config

Port 22 

La déclaration de port précise sur quel port le serveur sshd écoutera les connexions. Par défaut, il s'agit de 22. Vous devriez probablement ne pas toucher à ce paramètre, à moins que vous n'ayez des raisons spécifiques de faire autrement. Si vous **changez de port, nous vous montrerons comment vous connecter au nouveau port par la suite.

/etc/ssh/sshd_config

HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key HostKey /etc/ssh/ssh_host_ecdsa_key 

Les déclarations de clés d'hôtes précisent où chercher les clés d'hôtes globales. Nous discuterons plus tard de ce qu'est une clé d'hôte.

/etc/ssh/sshd_config

SyslogFacility AUTH LogLevel INFO 

Ces deux éléments indiquent le niveau connexion qui devrait avoir lieu.

Si vous avez des difficultés avec SSH, augmenter le nombre de connexions peut être un bon moyen de découvrir quel est le problème.

/etc/ssh/sshd_config

LoginGraceTime 120 PermitRootLogin yes StrictModes yes 

Ces paramètres précisent certaines des informations de connexion.

LoginGraceTime précise combien de secondes pour maintenir la connexion active sans se connecter avec succès.

Il peut être judicieux de fixer ce temps juste un peu plus élevé que le temps qu'il vous faut pour vous connecter normalement.

PermitRootLogin sélectionne si le root user est autorisé à se connecter.

Dans la plupart des cas, il faut passer à no lorsque vous avez créé un compte d'utilisateur qui a accès à des privilèges élevés (via su ou sudo) et peut se connecter via ssh.

strictModes est un garde de sécurité qui refusera une tentative de connexion si les fichiers d'authentification sont lisibles par tous.

Cela permet d'éviter les tentatives de connexion lorsque les fichiers de configuration ne sont pas sécurisés.

/etc/ssh/sshd_config

X11Forwarding yes X11DisplayOffset 10 

Ces paramètres configurent une capacité appelée X11 Forwarding. Cela vous permet de visualiser l'environnement graphique (GUI) d'un système distant sur le système local.

Cette option doit être activée sur le serveur et donnée avec le client SSH lors de la connexion avec l'option -X.

Après avoir effectué vos modifications, enregistrez et fermez le fichier en tapant CTRL+X et Y, puis ENTER.

Si vous avez modifié des paramètres dans /etc/ssh/sshd_config, veillez à recharger votre serveur sshd afin de mettre en œuvre vos modifications :

  • sudo systemctl reload ssh

Vous devez tester vos changements de manière approfondie pour vous assurer qu'ils fonctionnent comme prévu.

Il peut être judicieux d'avoir quelques séances actives lorsque vous effectuez des changements. Cela vous permettra de revenir sur la configuration si nécessaire.

Comment se connecter à SSH avec des clés

S'il est utile de pouvoir se connecter à un système à distance à l'aide de mots de passe, il est bien plus judicieux de mettre en place une authentification par clé.

Comment fonctionne l'authentification par clé ?

L'authentification par clé fonctionne en créant une paire de clés : une clé privée et une clé publique.

La clé privée se trouve sur la machine du client et est sécurisée et gardée secrète.

La clé publique peut être donnée à n'importe qui ou placée sur n'importe quel serveur auquel vous souhaitez accéder.

Lorsque vous tentez de vous connecter à l'aide d'une paire de clés, le serveur utilise la clé publique pour créer un message pour l'ordinateur client qui ne peut être lu qu'avec la clé privée.

L'ordinateur client renvoie alors la réponse appropriée au serveur et celui-ci saura que le client est légitime.

Tout ce processus se fait automatiquement après l'installation des clés.

Comment créer des clés SSH

Les clés SSH doivent être générées sur l'ordinateur duquel vous souhaitez vous connecter**. Il s'agit généralement de votre machine locale.

Entrez ce qui suit dans la ligne de commande :

  • ssh-keygen -t rsa

Appuyez sur la touche Entrée pour accepter les valeurs par défaut. Vos clés seront créées à l'adresse ~/.ssh/id_rsa.pub et ~/.ssh/id_rsa.

Passez dans le répertoire .ssh en tapant :

  • cd ~/.ssh

Regardez les autorisations des fichiers :

  • ls -l
Output-rw-r--r-- 1 demo demo  807 Sep  9 22:15 authorized_keys -rw------- 1 demo demo 1679 Sep  9 23:13 id_rsa -rw-r--r-- 1 demo demo  396 Sep  9 23:13 id_rsa.pub 

Comme vous pouvez le voir, le fichier id_rsa est lisible et accessible en écriture uniquement au propriétaire. C'est pour cela qu'il doit être gardé secret.

Le fichier id_rsa.pub, cependant, peut être partagé et dispose de permissions appropriées pour cette activité.

Comment transférer votre clé publique vers le serveur

Si vous avez actuellement un accès par mot de passe à un serveur, vous pouvez y copier votre clé publique en émettant cette commande :

  • ssh-copy-id remote_host

Cela permettra de démarrer une session SSH. Après que vous ayez entré votre mot de passe, il copiera votre clé publique dans le fichier des clés autorisées du serveur, ce qui vous permettra de vous connecter sans mot de passe la prochaine fois.

Options côté client

Il existe un certain nombre d'indicateurs optionnels que vous pouvez sélectionner lorsque vous vous connectez via SSH.

Certains d'entre eux peuvent être nécessaires pour correspondre aux paramètres de la configuration sshd de l'hôte distant.

Par exemple, si vous avez changé le numéro de port dans votre sshd, vous devrez faire correspondre ce port côté client en tapant :

  • ssh -p port_number remote_host

Si vous ne souhaitez exécuter qu'une seule commande sur un système distant, vous pouvez la spécifier après l'hôte comme cela :

  • ssh remote_host command_to_run

Vous vous connecterez à la machine distante, vous vous authentifierez, et la commande sera exécutée.

Comme nous l'avons déjà dit, si la transmission X11 est activée sur les deux ordinateurs, vous pouvez accéder à cette fonctionnalité en tapant :

  • ssh -X remote_host

Si vous disposez des outils appropriés sur votre ordinateur, les programmes de l'environnement graphique que vous utilisez sur le système distant ouvriront désormais leur fenêtre sur votre système local.

Désactiver l'authentification par mot de passe

Si vous avez créé des clés SSH, vous pouvez renforcer la sécurité de votre serveur en désactivant l'authentification uniquement par mot de passe. En dehors de la console, la seule façon de se connecter à votre serveur est d'utiliser la clé privée qui se couple avec la clé publique que vous avez installée sur le serveur.

Avertissement : Avant de procéder à cette étape, assurez-vous que vous avez installé une clé publique pour votre serveur. Sinon, vous serez bloqué à l'extérieur !

En tant que root ou utilisateur avec des privilèges sudo, ouvrez le fichier de configuration sshd :

  • sudo nano /etc/ssh/sshd_config

Localisez la ligne qui indique Password Authenticationet la décommenter en supprimant le premier #. Vous pouvez alors changer sa valeur à no :

/etc/ssh/sshd_config

PasswordAuthentication no 

Deux autres paramètres qui ne devraient pas avoir à être modifiés (à condition que vous n'ayez pas modifié ce fichier auparavant) sont PubkeyAuthentification et ChallengeResponseAuthentification. Elles sont définies par défaut et doivent se lire comme suit :

/etc/ssh/sshd_config

PubkeyAuthentication yes ChallengeResponseAuthentication no 

Après avoir effectué vos modifications, enregistrez et fermez le fichier.

Vous pouvez maintenant recharger le démon SSH :

  • sudo systemctl reload ssh

L'authentification par mot de passe devrait maintenant être désactivée, et votre serveur ne devrait être accessible que via l'authentification par clé SSH.

Conclusion

Apprendre à s'orienter au sein de SSH en vaut la peine, ne serait-ce que parce c'est un processus de routine.

Au fur et à mesure que vous utiliserez les différentes options, vous découvrirez des fonctionnalités plus avancées qui peuvent vous faciliter la vie. SSH est resté populaire parce qu'il est sûr, léger et utile dans diverses situations.