Guide : Installation et configuration d’un serveur SSH

Ce guide vous montre comment installer, configurer et utiliser un serveur SSH de manière sécurisée et pratique.

Installer et configurer le serveur SSH sur la VM #

On supposera que la VM Debian server est configurée en mode NAT et que le port 2222 de la machine hôte est publié pour le port 22 de la VM.

Installer un serveur ssh

  1. Installer openssh sur le serveur (Ubuntu/Debian) :
sudo apt update && sudo apt install -y openssh-server
  1. Lancer le service (via systemd) et vérifier que le serveur SSH est en cours d’exécution :
sudo systemctl enable --now ssh
sudo systemctl start ssh
#check
systemctl status ssh 

Sécuriser la connexion SSH

Pour sécuriser (un minimum requis) le serveur SSH, il est fortement recommandé :

  1. Éditer le fichier /etc/ssh/sshd_config avec votre éditeur favori :
PermitRootLogin no
#Laisser à yes pour l'instant, il faut d'abord déployer la clé via mot de passe !
PasswordAuthentication yes
PubkeyAuthentication yes
AllowUsers mon_user
  1. Redémarrer le service pour recharger la configuration :
sudo systemctl restart ssh

Création des clefs pour le chiffrement

Remplacez user par votre utilisateur UNIX (sur la VM)

  1. Sur votre machine hôte, générer une paire de clés publique/privée avec ssh-keygen:
ssh-keygen -t ed25519 -C "user@vm"

ssh-keygen a généré deux fichiers nommés par défaut :

~/.ssh/id_ed25519 (clé privée, à garder secrète !)
~/.ssh/id_ed25519.pub (clé publique, à déployer sur le serveur)
  1. Copier (déployer) la clé publique sur le serveur avec ssh-copy-id :
ssh-copy-id -p 2222 -i ~/.ssh/id_ed25519.pub user@localhost

Ou manuellement :

cat ~/.ssh/id_ed25519.pub | ssh -p 2222 user@localhost "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

À propos de l’algorithme utilisé

L’algorithme Ed25519 repose sur la cryptographie à courbes elliptiques (ECC). Pourquoi Ed25519 ?

Autres algorithmes disponibles :

#RSA avec clé 4096 bits (moins efficace que Ed25519)
ssh-keygen -t rsa -b 4096  
# ECDSA (courbe P-384)
ssh-keygen -t ecdsa -b 384  

#À éviter !!
ssh-keygen -t dsa # X

Connexion et finalisation de la configuration #

Pour se connecter en utilisant les clefs, plusieurs méthodes sont possibles :

Configuration du client SSH via un fichier de configuration #

La configuration du client via un fichier de configuration est pratique, notamment pour gérer plusieurs connexions.

  1. Créer ou éditer le fichier ~/.ssh/config
#Configuration d'un host (serveur SSH)
Host server                     # Alias de votre serveur
HostName 127.0.0.1              # Son IP (NAT, ici l'ip de la vm est localhost)
Port 2222                       # Port (NAT)
User mon_user                   # user
IdentityFile ~/.ssh/id_ed25519  # Clé privée à utiliser

#Vous pouvez ajouter à la suite d'autre hosts, en indiquant un Host différent à chaque fois.
  1. Pour vous connecter, il suffit à présent de saisir la commande :
ssh server
  1. Sur le serveur, maintenant que votre clef est déployée, désactiver la connexion par mot de passe (fichier /etc/ssh/sshd_config) :
#A présent que la clef est déployée on peut interdire l'accès par mot de passe
#-PasswordAuthentication yes
PasswordAuthentication no
  1. Sur le serveur, vérifier la configuration :
sudo sshd -T
sudo sshd -T | grep -E 'passwordauthentication|challengeresponseauthentication'
  1. Depuis le client (machine hôte), tester que la connexion par mot de passe ne fonctionne plus :
# Doit être refusé !
ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no -p 2222 user@localhost

Références #