Linux Platform

Configurer et sécurisér SSH

Guide complet pour générer des clés SSH, configurer le client et le serveur, mettre en place le tunneling et durcir la sécurité de vos connexions distantes.

sshsécuritécléstunnelingsshd

Introduction

SSH (Secure Shell) est le protocole standard pour administrer des serveurs Linux a distance. Ce tutoriel couvre la generation de clés, la configuration client et serveur, le tunneling et les bonnes pratiques de sécurité.

Generer une paire de clés SSH

L'algorithme recommande aujourd'hui est Ed25519, plus rapide et plus sur que RSA.

ssh-keygen -t ed25519 -C "[email protected]"

La commande créé deux fichiers dans ~/.ssh/ :

FichierRole
id_ed25519Cle privee -- ne jamais la partager
id_ed25519.pubCle publique -- a copier sur les serveurs

Pour protégér votre clé avec une passphrase forte, repondez a l'invite lors de la generation.

Copier la clé publique sur un serveur

ssh-copy-id -i ~/.ssh/id_ed25519.pub utilisateur@serveur

Cette commande ajoute votre clé publique dans le fichier ~/.ssh/authorized_keys du serveur. Vous pouvez ensuite vous connecter sans mot de passe :

ssh utilisateur@serveur

Le fichier de configuration client ~/.ssh/config

Ce fichier permet de définir des alias et des options par hôte pour simplifier vos connexions.

# ~/.ssh/config
 
Host prod
    HostName 192.168.1.100
    User admin
    Port 2222
    IdentityFile ~/.ssh/id_ed25519
 
Host staging
    HostName staging.exemple.fr
    User deploy
    IdentityFile ~/.ssh/id_ed25519
    ForwardAgent yes

Avec cette configuration, il suffit de taper :

ssh prod
ssh staging

L'agent SSH

L'agent SSH garde vos clés deverrouillees en mémoire pour eviter de rétaper la passphrase a chaque connexion.

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

Pour lister les clés chargees :

ssh-add -l

Pour supprimer toutes les clés de l'agent :

ssh-add -D

Tunneling et redirection de ports

Redirection locale (Local Port Forwarding)

Acceder a un service distant (par exemple une base de données sur le port 5432) via un tunnel local :

ssh -L 5432:localhost:5432 utilisateur@serveur

Vous pouvez alors vous connecter a localhost:5432 sur votre machine locale et le trafic sera redirige vers le serveur distant.

Redirection distante (Remote Port Forwarding)

Exposer un service local (port 3000) sur le serveur distant :

ssh -R 8080:localhost:3000 utilisateur@serveur

Tunnel SOCKS dynamique

Creer un proxy SOCKS local pour faire transiter tout le trafic via le serveur :

ssh -D 1080 utilisateur@serveur

Securiser le serveur SSH (sshd_config)

Editez le fichier /etc/ssh/sshd_config pour durcir la configuration du serveur.

sudo nano /etc/ssh/sshd_config

Parametrès recommandes

Port 2222                         # changer le port par défaut
PermitRootLogin no                # interdire la connexion root
PasswordAuthentication no         # désactiver l'authentification par mot de passe
PubkeyAuthentication yes          # activer l'authentification par cle
MaxAuthTries 3                    # limiter les tentatives
AllowUsers admin deploy           # restreindre les utilisateurs autorises
ClientAliveInterval 300           # deconnexion après 5 min d'inactivité
ClientAliveCountMax 2
Protocol 2                        # forcer le protocole 2

Apres modification, redemarrez le service :

sudo systemctl restart sshd

Verifier la configuration avant de redémarrer

sudo sshd -t

Cette commande valide la syntaxe du fichier de configuration. Si elle ne renvoie aucune erreur, le redémarrage est sans risque.

Gestion des clés sur le serveur

Lister les clés autorisees

cat ~/.ssh/authorized_keys

Revoquer une cle

Editez le fichier authorized_keys et supprimez la ligne correspondant a la clé a revoquer :

nano ~/.ssh/authorized_keys

Permissions requises

Les permissions doivent être strictes, sinon SSH refusera la connexion :

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub

Conclusion

SSH est un outil indispensable pour tout administrateur Linux. Une configuration correcte -- clés Ed25519, agent SSH, fichier de configuration client et serveur durci -- vous permettra de travailler efficacement et en toute sécurité sur vos machines distantes.