-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
91 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
--- | ||
type: "post" | ||
title: "Principes de base de l'utilisation de clés SSH." | ||
date: "2023-10-20" | ||
lastModified: ~ | ||
tableOfContent: true | ||
description: "Génération, utilisation et cas pratiques d'utilisation de clés SSH." | ||
|
||
thumbnail: "content/images/blog/thumbnails/zsh.jpg" | ||
credits: { name: "Mohammad Rahmani", url: "https://unsplash.com/@afgprogrammer" } | ||
tags: ["cours", "ssh", "how-to"] | ||
categories: ["cours"] | ||
authors: ["gfaivre"] | ||
--- | ||
|
||
Une clé SSH est un **moyen d'authentification** vers un serveur SSH reposant sur les principes de **[cryptographie asymétrique](https://fr.wikipedia.org/wiki/Cryptographie_asym%C3%A9trique)** et **[d'authentification défi / réponse](https://fr.wikipedia.org/wiki/Authentification_d%C3%A9fi-r%C3%A9ponse)**. | ||
|
||
Elle a deux avantages fondamentaux comparativement avec une authentification par couple identifiant/mot de passe: | ||
|
||
- Permettre une authentification facilité (plus de mot de passe à mémoriser) et plus rapide (possibilité de rebond de serveur à serveur par exemple). | ||
- Se prémunir des attaques de type [force brute](https://fr.wikipedia.org/wiki/Attaque_par_force_brute) | ||
|
||
La très grande majorité des accès serveurs sont aujourd'hui basés sur leur utilisation, au dela de l'aspect fluidité et sécurité, elle ouvre également la possibilité d'authorisation multiple (sur plusieurs serveurs), de révocation et de signature des accès facilités. | ||
|
||
!!! info "Secure Shell (SSH)" | ||
Secure Shell (SSH) est à la fois un programme informatique et un protocole de communication sécurisé. | ||
Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite, tous les segments TCP sont authentifiés et chiffrés. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. | ||
Le protocole SSH a été conçu avec l'objectif de remplacer les différents protocoles non chiffrés comme rlogin, telnet, rcp et rsh. | ||
|
||
## Pré-requis | ||
|
||
- Avoir un client SSH installé (OpenSSH pour Linux/OSX et Windows à présent ou encore [Putty](https://www.putty.org/) pour Windows) | ||
- Une ligne de commande ( le truc noir dans lequel on tape du texte ;) ) | ||
|
||
## TL;DR | ||
|
||
**Génération d'une paire de clé:** | ||
``` | ||
ssh-keygen -t ed25519 -a 150 | ||
``` | ||
|
||
## Génération d'une paire de clés | ||
|
||
Le principe de l'authentification par clés repose, comme explicité sur les différents liens ci-dessus, par la création d'une paire de clés asymétriques. | ||
L'un de ces clés sera votre clé **publique** à déployer sur les machines auxquelles vous avez le droit de vous connecter, l'autre votre clé **privée** et comme son nom l'indique, celle-ci est à vous et rien qu'à vous, elle ne se partage pas, **jamais**. | ||
|
||
Deux notions de base avant de se lancer pour bien comprendre ce que l'on fait: | ||
|
||
- Il existe plusieurs types d'**algorithmes de signature numérique**, les plus répandus étant **[RSA](https://fr.wikipedia.org/wiki/Chiffrement_RSA)** et **[Ed25519](https://fr.wikipedia.org/wiki/EdDSA)**. | ||
- Il est possible de spécifier la longueur de vos clés, ce paramètre est essentiel à leur **robustesse** | ||
|
||
Il est recommandé, à la date de rédaction de cet article, d'utiliser une longueur de clé de **4096 bits** ainsi que l'algorithme **Ed25519** qui a plusieurs avantages comparativement à RSA: | ||
|
||
- Robustesse accrue | ||
- Plus petite taille de clés | ||
- Génération des clés plus rapide | ||
|
||
``` | ||
ssh-keygen -t ed25519 -a 150 -C "[email protected]" | ||
``` | ||
|
||
L'option `-C` permet d'ajouter un commentaire à votre clé, pratique notamment pour **identifier le propriétaire d'une clé publique coté serveur**. | ||
|
||
!!! danger "Phrase de passe" | ||
Bien que facultative, il est « **extrêmement vachement recommandé** » de disposer d'une phrase de passe sur vos clés SSH (dans le cadre des cours et pour gagner du temps il est possible de s'en passer **si vous n'utilisez pas votre clé en dehors de ceux-ci**). | ||
|
||
Cette commande vous aura généré deux fichiers dans le répertoire `~/.ssh/` (sauf si vous l'avez modifié bien évidemment): | ||
|
||
- `id_ed25519.pub` (comme son extension l'indique c'est votre clé **publique**) | ||
- `id_ed25519` votre clé **privée** (on remarquera les droits qui lui sont appliqués `0600`, en effet seul votre utilisateur doit y avoir accès) | ||
|
||
!!! info "Générer une clé RSA" | ||
Ed25519 n'étant de temps en temps pas supporté (surtout par les anciens systèmes) il est parfois nécessaire de générer une paire de clé RSA: | ||
`ssh-keygen -t rsa -a 150 -b 4096` | ||
|
||
## Se connecter à un serveur distant | ||
|
||
C'est un peu la finalité. | ||
Imaginons un serveur pour lequel votre clé est authorisée à se connecter (pour rappel fichier `authorized_keys`), nous pouvons initier une connexion à l'aide de la commande: | ||
|
||
`ssh user@server_address` | ||
|
||
Cette commande aura donc pour effet « d'ouvrir » une connexion sur un serveur distant via le protocol SSH vous permettant de saisir des lignes de commande **directement** sur ce serveur et donc de **l'administrer**. | ||
|
||
Il est possible d'utiliser **des syntaxes différentes** en fonction de votre [fichier de configuration SSH](/blog/cours/utiliser-la-configuration-ssh-client). | ||
|
||
## Sources: | ||
|
||
- https://fr.wikipedia.org/wiki/Secure_Shell |