Aller au contenu principal

SSH - Lancer un terminal sur votre session sans avoir à vous authentifier

Arrêtez de taper votre mot de passe SSH ! Apprenez à utiliser les clés SSH et `ssh-copy-id` pour lancer instantanément une session terminal Linux sans avoir à vous authentifier chaque fois.

· 6 minutes de lecture
Voir la source
Christophe
Amoureux de Markdown, WSL et Docker ~ Curieux insatiable.
Cet article existe aussi en anglais — lire la version originale.

Traduction automatique

Cette traduction a été produite par une IA. Elle peut contenir des contresens ou des maladresses, en particulier sur les termes techniques. En cas de doute, consultez l'article de référence en anglais — c'est lui qui fait foi.

Cet article a plus d'un an. Les informations peuvent être obsolètes.

Journal des modifications

Dernière
Adding the config file chapter

SSH - Lancer un terminal sur votre session sans avoir à vous authentifier

⚡
TL;DR

Ce guide explique comment mettre en place une connexion SSH sans mot de passe vers vos serveurs Linux. Vous allez apprendre à générer une paire de clés SSH, à utiliser ssh-copy-id pour transférer votre clé publique vers le serveur de façon sécurisée, et à vous connecter sans mot de passe. Le tutoriel aborde aussi scp pour les transferts de fichiers sécurisés et montre comment créer des raccourcis pratiques pour vos connexions grâce à un fichier ~/.ssh/config, ce qui permet de se connecter avec un simple alias.

Imaginez que vous devez régulièrement vous connecter à votre serveur Linux : vous devez lancer un outil comme Putty, saisir votre login, votre mot de passe, etc. et effectuer plusieurs opérations avant d'accéder au terminal.

Si votre mot de passe n'est pas enregistré dans la configuration de Putty, vous devrez lancer un autre outil comme un coffre-fort de mots de passe ; bref, c'est pénible.

Dans cet article, nous allons voir comment s'authentifier une fois pour toutes sur le serveur à l'aide d'une clé SSH.

Deux articles qui prolongent celui-ci : Comment se connecter à votre serveur d'hébergement en SSH, appliqué à un vrai compte d'hébergement, et Maîtrisez votre commande ssh et choisissez l'host dans une liste quand votre ~/.ssh/config contient une dizaine d'alias.

Information

Pour illustrer cet article, partons du principe que christophe est le nom d'utilisateur distant (c'est le nom d'utilisateur sur le serveur, différent de votre nom d'utilisateur local) et que my_blog.be est l'adresse du serveur distant.

Pensez à remplacer ces deux constantes par les vôtres ;-)

TLDR​

Créez une clé SSH, copiez-la sur le serveur distant et lancez une connexion SSH. Les étapes 1 et 2 ne se font qu'une seule fois.

Les étapes à lancer dans votre console :

  • ssh-keygen -t ed25519 -C "christophe@my_blog.be" -f ~/.ssh/id_ed25519_my_blog
  • ssh-copy-id -i ~/.ssh/id_ed25519_my_blog christophe@my_blog.be
  • ssh -i ~/.ssh/id_ed25519_my_blog christophe@my_blog.be

En détail​

1. Créer la clé SSH​

La première chose à faire, une seule fois, est de générer une clé SSH sur votre host pour le serveur distant.

En lançant ssh-keygen -t ed25519 -C "christophe@my_blog.be" -f ~/.ssh/id_ed25519_my_blog (ou ssh-keygen -t rsa -C "christophe@my_blog.be" -b 4096 -f ~/.ssh/id_rsa_my_blog pour l'algorithme RSA) :

  1. Vous allez créer une clé SSH pour l'utilisateur distant christophe sur le serveur my_blog.be. Vous obtiendrez une clé privée et une clé publique,
  2. La clé sera enregistrée sur votre machine et le nom de fichier sera ~/.ssh/id_ed25519_my_blog pour la clé privée (et ~/.ssh/id_ed25519_my_blog.pub pour la publique),
  3. La clé sera basée sur l'algorithme ed25519.

2. Copier la clé​

Ceci fait, vous devez copier la clé SSH publique sur votre serveur distant. Pour cela, lancez ssh-copy-id -i ~/.ssh/id_ed25519_my_blog christophe@my_blog.be. Cela ne doit être fait qu'une seule fois.

  1. Vous allez copier votre clé publique SSH locale id_ed25519_my_blog sur le serveur my_blog.be,
  2. La clé sera ajoutée pour l'utilisateur distant christophe,
  3. Vous devrez fournir le mot de passe de cet utilisateur lorsqu'il sera demandé.

Information

La commande ssh-copy-id ajoutera votre clé publique à la fin du fichier ~/.ssh/authorized_keys sur le serveur.

3. Se connecter au serveur​

Maintenant, tout est en place : vous pouvez lancer ssh -i ~/.ssh/id_ed25519_my_blog christophe@my_blog.be et cela devrait fonctionner puisque la clé publique id_ed25519_my_blog a déjà été copiée sur le serveur my_blog.be pour l'utilisateur christophe.

Information

Vous pouvez afficher ou éditer le contenu du fichier ~/.ssh/authorized_keys en lançant cat ~/.ssh/authorized_keys (ou vi ~/.ssh/authorized_keys). Vous pourrez ainsi supprimer d'anciennes clés autorisées, par exemple.

Copier des fichiers de votre host vers le serveur​

Maintenant que nous pouvons nous connecter au serveur si facilement, nous pouvons par exemple copier des fichiers depuis notre host comme ceci :

>user@machine: ~/yourproject

Il faut d'abord indiquer notre fichier (ou dossier) local puis où le copier.

Copier des fichiers du serveur vers votre host​

Maintenant, dans l'autre sens, du serveur vers votre host :

>user@machine: ~/yourproject

Copier des dossiers​

Si vous devez copier un dossier, ajoutez simplement le flag récursif, c'est-à-dire -r.

Par exemple, scp -r christophe@my_blog.be:~/backup/ . va copier tout le dossier ~/backup du serveur dans mon dossier local courant. Vraiment pratique.

Astuces​

Lancer ssh depuis Microsoft Terminal​

L'expérience SSH est bien, bien meilleure avec Microsoft Terminal qu'avec la vieille application Putty.

Avec Microsoft Terminal, vous pouvez travailler en plein écran, avoir une jolie image de fond, utiliser une bien meilleure police (celle de Putty par défaut est affreuse), utiliser des onglets, ...

Si vous avez déjà utilisé Putty, vous voyez ce que je veux dire.

Utiliser le fichier config​

Comme nous l'avons vu, avec la commande ssh ou scp, nous devons préciser le nom d'utilisateur, le nom ou l'adresse IP du serveur et le nom du fichier contenant la clé privée. Ça fait beaucoup d'informations à fournir, non ?

En plus, comme moi, je n'arrive pas à retenir toutes ces informations. Je veux juste me connecter à mon serveur d'applications, c'est tout !

Ce serait bien de pouvoir faire ssh my_application et basta. Non ? C'est justement le but du fichier ~/.ssh/config !

Pour me connecter à ce serveur, ma commande ssh ressemble à ceci : ssh christophe@my_blog.be -i ~/.ssh/id_ed25519_my_blog. Pas facile à retenir !

Créons un fichier ~/.ssh/config. Si le fichier existe déjà, éditez-le : code ~/.ssh/config.

Ajoutez ces lignes dans le fichier :

Host my_app
Hostname my_blog.be
User christophe
IdentityFile ~/.ssh/id_ed25519_my_blog

Cette configuration SSH définit les paramètres de connexion pour un hôte appelé my_app. Elle spécifie le nom d'hôte réel, l'utilisateur à utiliser pour la connexion et le chemin vers la clé privée Ed25519 qui authentifiera la connexion.

Enregistrez le fichier et retournez dans la console.

Maintenant, il suffit de lancer ssh my_app pour établir la connexion. Plutôt simple, non ?

Vous voulez en savoir plus ? Poursuivez votre lecture ici https://linuxize.com/post/using-the-ssh-config-file/

Pour aller plus loin​

Une fois que votre fichier ~/.ssh/config commence à se remplir d'alias, deux articles complémentaires valent le coup d'œil : SSH - Autosuggestions avec ZSH, pour ne plus jamais devoir retenir un alias, et Utiliser sftp en ligne de commande si vous avez besoin du pendant sftp de scp.


🦋 Rejoignez la conversation sur BlueskyUn compte Bluesky gratuit est nécessaire pour aimer, repartager ou commenter. Ce bloc interroge l'API publique de Bluesky directement depuis votre navigateur (sans cookie, sans connexion) — votre adresse IP parvient donc aux serveurs de Bluesky dès que cette section se charge.

Chargement des commentaires…

Cet article vous a-t-il été utile ?
Avez-vous suivi les étapes de cet article ?