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.
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 :
- ssh remote_username@remote_host
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
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.
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 :
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.
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.
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.
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.
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.
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é.
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.
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é.
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.
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.
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 Authentication
et la décommenter en supprimant le premier #
. Vous pouvez alors changer sa valeur à no
:
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 :
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.
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.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!