SSH - Connexion Sécurisée à un Serveur VPS : Guide Complet 2025
Alternative RVB | SSH - Connexion Sécurisée à un Serveur VPS : Guide Complet 2025

Apprenez à configurer et utiliser SSH (Secure Shell) pour vous connecter en toute sécurité à votre serveur VPS ou serveur distant. Ce tutoriel complet couvre l’installation, la configuration des clés SSH, et les bonnes pratiques de sécurité.
Table des matières
- Qu’est-ce que SSH et pourquoi l’utiliser ?
- Prérequis
- Installation de SSH
- Première connexion SSH
- Authentification par clés SSH (méthode recommandée)
- Configuration avancée du fichier SSH config
- Connexion automatique sans passphrase
- Gestion des clés SSH
- Sécurisation de votre serveur SSH
- Résolution des problèmes courants
Qu’est-ce que SSH et pourquoi l’utiliser ?
SSH (Secure Shell) est un protocole de communication sécurisé permettant de :
- Se connecter à distance à un serveur Linux/Unix
- Transférer des fichiers de manière cryptée
- Exécuter des commandes à distance en toute sécurité
- Remplacer les protocoles non sécurisés comme Telnet ou FTP
Avantages de SSH : Chiffrement des données, authentification forte, tunnel sécurisé pour d’autres protocoles.
Prérequis
Côté client (votre ordinateur) :
- Windows 10/11 avec WSL 2, macOS, ou Linux
- Terminal Bash (WSL, Terminal Windows, ou terminal natif)
- Accès Internet
Côté serveur :
- Serveur VPS avec Linux (Ubuntu, Debian, CentOS, etc.)
- Accès root ou utilisateur avec privilèges sudo
- Adresse IP du serveur
Installation de SSH
Sur Windows (WSL 2)
Ouvrez votre terminal WSL et installez le client SSH :
sudo apt update
sudo apt install openssh-client
Ou pour une installation complète :
## Client uniquement
sudo apt install openssh-client
# Serveur uniquement (si vous voulez aussi accepter des connexions)
sudo apt install openssh-server
# Les deux en même temps
sudo apt install ssh
Pour vérifier l’installation :
ssh -V
Vous devriez voir la version d’OpenSSH installée (ex: OpenSSH_8.9p1).
Sur macOS
SSH est préinstallé sur macOS. Vérifiez simplement la version :
ssh -V
Sur Linux (Ubuntu/Debian)
sudo apt update
sudo apt install openssh-client
Options d’installation :
# Client uniquement
sudo apt install openssh-client
# Serveur uniquement
sudo apt install openssh-server
# Les deux
sudo apt install ssh
Installation du serveur SSH (côté serveur)
Si vous configurez un serveur :
sudo apt update
sudo apt install openssh-server
Vérifier et gérer le service SSH
La commande à utiliser dépend de votre système d’exploitation :
Sur les systèmes modernes (Ubuntu 16.04+, Debian 8+, CentOS 7+)
Utilisez systemctl :
# Vérifier le statut
sudo systemctl status ssh
# Démarrer le service
sudo systemctl start ssh
# Arrêter le service
sudo systemctl stop ssh
# Redémarrer le service
sudo systemctl restart ssh
# Activer au démarrage
sudo systemctl enable ssh
# Désactiver au démarrage
sudo systemctl disable ssh
Sur les systèmes plus anciens (Ubuntu < 16.04, Debian < 8)
Utilisez service :
# Vérifier le statut
sudo service ssh status
# Démarrer le service
sudo service ssh start
# Arrêter le service
sudo service ssh stop
# Redémarrer le service
sudo service ssh restart
ℹ️ Info Sur les systèmes modernes,
servicefonctionne toujours (il redirige verssystemctl), maissystemctlest la méthode recommandée.
Comment savoir quelle commande utiliser ?
# Vérifier si systemd est utilisé
ps -p 1
# Si vous voyez "systemd", utilisez systemctl
# Si vous voyez "init", utilisez service
Ou plus simplement :
# Cette commande fonctionne sur tous les systèmes
which systemctl && echo "Utilisez systemctl" || echo "Utilisez service"
Première connexion SSH
Test en local
Testez d’abord votre configuration SSH en local :
ssh votre_nom_utilisateur@localhost
Entrez votre mot de passe lorsque demandé.
Connexion à un serveur distant
ssh nom_utilisateur@adresse_ip_serveur
Exemple :
ssh ubuntu@192.168.1.100
Ou avec un nom de domaine :
ssh root@monserveur.com
À noter
yes pour continuer.Authentification par clés SSH (méthode recommandée)
L’authentification par clés SSH est beaucoup plus sécurisée que l’authentification par mot de passe. Voici comment la configurer.
Étape 1 : Générer une paire de clés SSH
À effectuer côté client uniquement
Méthode moderne (recommandée en 2025) - Ed25519 :
ssh-keygen -t ed25519 -C "votre.email@example.com"
Alternative pour les serveurs anciens - RSA 4096 bits :
ssh-keygen -t rsa -b 4096 -C "votre.email@example.com"
Version minimale (RSA par défaut) :
ssh-keygen -t rsa
Lors de la génération :
- Validez l’emplacement par défaut (
~/.ssh/id_ed25519ou~/.ssh/id_rsa) - Définissez une passphrase robuste (recommandé pour plus de sécurité)
Étape 2 : Copier la clé publique sur le serveur
Méthode automatique (recommandée) :
ssh-copy-id -i ~/.ssh/id_ed25519.pub nom_utilisateur@adresse_ip_serveur
Pour RSA :
ssh-copy-id -i ~/.ssh/id_rsa.pub nom_utilisateur@adresse_ip_serveur
Entrez le mot de passe du serveur une dernière fois.
Méthode manuelle (si ssh-copy-id ne fonctionne pas) :
cat ~/.ssh/id_ed25519.pub | ssh nom_utilisateur@serveur "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Si l’authentification par mot de passe est déjà désactivée sur le serveur :
ssh nom_utilisateur@serveur "echo $(cat ~/.ssh/id_ed25519.pub) >> .ssh/authorized_keys"
Ou pour RSA :
ssh nom_utilisateur@serveur "echo $(cat ~/.ssh/id_rsa.pub) >> .ssh/authorized_keys"
Étape 3 : Se connecter avec la clé SSH
ssh nom_utilisateur@adresse_ip_serveur
Vous devrez maintenant entrer votre passphrase (et non plus le mot de passe du serveur).
Vérifier les permissions correctes
Sur le serveur, assurez-vous que les permissions sont correctes :
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Configuration avancée du fichier SSH config
Le fichier ~/.ssh/config permet de simplifier vos connexions SSH en créant des
alias.
Créer et éditer le fichier config
touch ~/.ssh/config
chmod 600 ~/.ssh/config
nano ~/.ssh/config
Ou avec cat :
cat ~/.ssh/config
Exemple de configuration
# Serveur de production
Host prod
HostName 192.168.1.100
User ubuntu
Port 22
IdentityFile ~/.ssh/id_ed25519
# Serveur de développement
Host dev
HostName dev.monsite.com
User devuser
Port 2222
IdentityFile ~/.ssh/id_rsa
# Configuration globale
Host *
AddKeysToAgent yes
ServerAliveInterval 60
ServerAliveCountMax 3
Sécuriser le fichier config :
chmod 600 ~/.ssh/config
Se connecter avec un alias
Maintenant, connectez-vous simplement avec :
ssh prod
Au lieu de :
ssh ubuntu@192.168.1.100
Connexion automatique sans passphrase
Pour éviter de taper votre passphrase à chaque connexion, utilisez ssh-agent.
Démarrer ssh-agent
Il existe plusieurs méthodes pour démarrer ssh-agent :
Méthode 1 :
eval $(ssh-agent)
Ou :
eval `ssh-agent`
Méthode 2 :
exec ssh-agent bash
Cette méthode remplace votre shell actuel par un nouveau shell avec ssh-agent actif.
Ajouter votre clé à l’agent
ssh-add
Ou spécifiez la clé :
ssh-add ~/.ssh/id_ed25519
Solution pour retenir la passphrase de manière permanente
Méthode 1 : Configuration automatique dans .bashrc
Ajoutez ces lignes à votre fichier ~/.bashrc ou ~/.profile :
# Démarrage automatique de ssh-agent
if [ -z "$SSH_AUTH_SOCK" ]; then
eval $(ssh-agent -s)
ssh-add ~/.ssh/id_ed25519 2>/dev/null
fi
Rechargez la configuration :
source ~/.bashrc
Ou :
. ~/.bashrc
Méthode 2 : Configuration SSH automatique
Tout d’abord, assurez-vous que ssh-agent fonctionne tout le temps en ajoutant
eval $(ssh-agent) au fichier .bashrc ou .profile.
Ensuite, ajoutez AddKeysToAgent yes au fichier de configuration SSH :
touch ~/.ssh/config
chmod 600 ~/.ssh/config
echo "AddKeysToAgent yes" >> ~/.ssh/config
La passphrase sera enregistrée pour la session.
Sur Windows 10/11 (sans WSL)
Windows dispose d’un service SSH-Agent natif.
Étape 1 : Activer le service (PowerShell administrateur) :
Get-Service ssh-agent | Set-Service -StartupType Automatic
Start-Service ssh-agent
Étape 2 : Ajouter votre clé :
ssh-add C:\Users\VotreNom\.ssh\id_ed25519
Avec Keychain (Linux)
Keychain est un outil pratique pour gérer ssh-agent de manière persistante et retenir la passphrase entre les redémarrages.
Installation :
sudo apt install keychain
Configuration dans ~/.bashrc ou ~/.profile :
# Démarrer keychain et charger les clés
eval $(keychain --eval --agents ssh ~/.ssh/id_ed25519)
Ou pour plusieurs clés :
eval $(keychain --eval --agents ssh ~/.ssh/id_ed25519 ~/.ssh/id_rsa ~/.ssh/cle_perso)
Recharger la configuration :
source ~/.bashrc
Ou :
. ~/.profile
Avantages de keychain :
- Réutilise l’agent SSH existant entre les sessions
- Demande la passphrase une seule fois après le redémarrage
- Gère plusieurs clés facilement
Pour plus d’informations sur keychain, consultez la documentation : http://www.funtoo.org/Keychain
Gestion des clés SSH
Lister les clés chargées dans l’agent SSH
ssh-add -l
Cette commande affiche toutes les clés actuellement chargées dans ssh-agent avec leur empreinte (fingerprint).
Lister l’empreinte d’une clé spécifique
ssh-keygen -l -f ~/.ssh/id_ed25519.pub
Pour une clé privée :
ssh-keygen -l -f ~/.ssh/id_ed25519
Pour RSA :
ssh-keygen -l -f ~/.ssh/id_rsa.pub
Supprimer toutes les clés de l’agent
ssh-add -D
Supprimer une clé spécifique de l’agent
ssh-add -d ~/.ssh/id_ed25519
Changer ou supprimer la passphrase d’une clé
Pour changer la passphrase :
ssh-keygen -p -f ~/.ssh/id_ed25519
Ou simplement :
ssh-keygen -p
Pour supprimer complètement la passphrase :
Exécutez la commande ci-dessus, puis validez sans entrer de mot de passe quand on vous demande la nouvelle passphrase.
⚠️ Danger sécurité
Vérifier les permissions de vos clés
Les permissions correctes sont essentielles pour la sécurité :
# Vérifier les permissions
ls -la ~/.ssh/
# Corriger les permissions si nécessaire
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub # 644 acceptable car clé publique (lecture seule)
chmod 600 ~/.ssh/config
chmod 600 ~/.ssh/authorized_keys
ℹ️ Info La clé publique (.pub) peut être en 644 (lecture publique) car elle n’est pas sensible. Certains préfèrent 600 par principe de moindre privilège, mais 644 est parfaitement acceptable et standard.
Sécurisation de votre serveur SSH
Une fois SSH configuré, sécurisez votre serveur avec ces bonnes pratiques.
1. Éditer la configuration SSH
Éditez le fichier de configuration SSH sur le serveur :
sudo nano /etc/ssh/sshd_config
Ou avec vim :
sudo vim /etc/ssh/sshd_config
2. Désactiver l’authentification par mot de passe
Ajoutez ou modifiez ces lignes dans /etc/ssh/sshd_config :
PasswordAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication no
UsePAM no
3. Désactiver la connexion root
Dans le même fichier :
PermitRootLogin no
⚠️ Risque de blocage
Créer un utilisateur avec sudo :
# Créer l'utilisateur
sudo adduser nom_utilisateur
# Ajouter aux sudoers
sudo usermod -aG sudo nom_utilisateur
4. Changer le port SSH par défaut
Le port 22 est constamment scanné par les bots. Changez-le :
Port 2222
N’oubliez pas de :
- Configurer votre pare-feu pour autoriser le nouveau port
- Mettre à jour votre fichier
~/.ssh/configcôté client
5. Limiter les utilisateurs autorisés
Pour autoriser uniquement certains utilisateurs :
AllowUsers utilisateur1 utilisateur2
Ou pour refuser certains utilisateurs :
DenyUsers utilisateur_banni
6. Désactiver X11 Forwarding (si non utilisé)
X11Forwarding no
7. Limiter les tentatives de connexion
MaxAuthTries 3
MaxSessions 2
8. Activer la journalisation détaillée
LogLevel VERBOSE
9. Sécuriser les algorithmes cryptographiques (recommandé 2025)
Pour renforcer la sécurité contre les attaques modernes, limitez les algorithmes aux plus robustes :
# Algorithmes d'échange de clés (protection quantique incluse)
KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512
# Chiffrements (privilégier les clés longues)
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes256-ctr
# MACs (codes d'authentification)
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com
ℹ️ Info Ces algorithmes représentent les standards 2025 recommandés par la communauté OpenSSH pour une sécurité maximale. Les anciens algorithmes (DSA, ECDSA faibles) sont exclus.
10. Redémarrer le service SSH
Après toute modification du fichier de configuration :
Sur les systèmes modernes (systemctl) :
sudo systemctl restart ssh
Sur les systèmes anciens (service) :
sudo service ssh restart
⚠️ Risque de blocage
11. Installer Fail2ban (protection contre brute-force)
Fail2ban bannit automatiquement les IP qui tentent trop de connexions échouées.
Installation :
sudo apt install fail2ban
Démarrage sur systèmes modernes :
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
Démarrage sur systèmes anciens :
sudo service fail2ban start
Configuration de base :
Créez le fichier /etc/fail2ban/jail.local :
sudo nano /etc/fail2ban/jail.local
Ajoutez cette configuration :
[DEFAULT]
bantime = 86400 # 24 heures (recommandé en 2025 contre les attaques distribuées)
findtime = 600 # 10 minutes
maxretry = 3 # 3 tentatives échouées
[sshd]
enabled = true
port = 22
# Si vous avez changé le port SSH, mettez le bon numéro ici
logpath = /var/log/auth.log
Si vous utilisez un port personnalisé :
[sshd]
enabled = true
port = 2222
logpath = /var/log/auth.log
maxretry = 3
bantime = 86400 # 24 heures
Redémarrer Fail2ban :
# Systèmes modernes
sudo systemctl restart fail2ban
# Systèmes anciens
sudo service fail2ban restart
Vérifier le statut :
sudo fail2ban-client status sshd
12. Configurer le pare-feu UFW
# Installer UFW (si non installé)
sudo apt install ufw
# Autoriser SSH (port par défaut)
sudo ufw allow 22/tcp
# Ou si vous avez changé le port
sudo ufw allow 2222/tcp
# Activer le pare-feu
sudo ufw enable
# Vérifier le statut
sudo ufw status
Résolution des problèmes courants
Erreur : Permission denied (publickey)
Causes possibles :
- La clé publique n’est pas sur le serveur
- Mauvaises permissions sur
~/.sshouauthorized_keys - Vous utilisez la mauvaise clé
- L’authentification par clé est désactivée
Solutions :
# Vérifier les permissions côté serveur
ssh nom_utilisateur@serveur "ls -la ~/.ssh"
# Corriger les permissions
ssh nom_utilisateur@serveur "chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"
# Recopier la clé
ssh-copy-id -i ~/.ssh/id_ed25519.pub nom_utilisateur@serveur
# Vérifier quelle clé est utilisée
ssh -v nom_utilisateur@serveur
Erreur : Connection timed out
Causes possibles :
- Pare-feu bloque la connexion
- Mauvaise adresse IP
- Service SSH non démarré
- Problème réseau
Solutions :
# Vérifier que le serveur SSH écoute
sudo netstat -tlnp | grep ssh
# Ou avec ss (plus moderne)
sudo ss -tlnp | grep ssh
# Vérifier le pare-feu
sudo ufw status
# Autoriser SSH
sudo ufw allow 22/tcp
# Redémarrer SSH
sudo systemctl restart ssh # ou sudo service ssh restart
# Tester la connectivité
ping adresse_ip_serveur
Erreur : Host key verification failed
Cela arrive quand la clé du serveur a changé (réinstallation, attaque man-in-the-middle).
Solution (si vous êtes sûr que c’est légitime) :
ssh-keygen -R adresse_ip_serveur
Ou pour un port spécifique :
ssh-keygen -R [adresse_ip_serveur]:2222
Puis supprimez manuellement la ligne concernée dans ~/.ssh/known_hosts.
Erreur : Too many authentication failures
Vous avez trop de clés chargées dans ssh-agent.
Solution :
# Supprimer toutes les clés
ssh-add -D
# Ajouter uniquement la bonne clé
ssh-add ~/.ssh/id_ed25519
# Ou spécifier la clé dans la connexion
ssh -i ~/.ssh/id_ed25519 nom_utilisateur@serveur
Problème WSL : setsockopt IPV6_TCLASS
Si vous voyez cette erreur sur WSL 1 :
setsockopt IPV6_TCLASS 8: Operation not permitted
Solution :
Ajoutez à ~/.ssh/config :
AddressFamily inet
Ou plus globalement :
echo "AddressFamily inet" >> ~/.ssh/config
ℹ️ Info Ce problème n’existe généralement pas sur WSL 2.
Connexion lente
Si la connexion SSH est lente à s’établir, désactivez la recherche DNS inversée sur le serveur.
Sur le serveur, éditez /etc/ssh/sshd_config :
sudo nano /etc/ssh/sshd_config
Ajoutez ou modifiez :
UseDNS no
GSSAPIAuthentication no
Puis redémarrez :
sudo systemctl restart ssh # ou sudo service ssh restart
Erreur : Agent admitted failure to sign
L’agent SSH ne trouve pas votre clé.
Solution :
# Ajouter la clé à l'agent
ssh-add ~/.ssh/id_ed25519
# Vérifier les clés chargées
ssh-add -l
Débogage avancé avec mode verbose
Pour voir exactement ce qui se passe lors de la connexion :
# Mode verbose
ssh -v nom_utilisateur@serveur
# Mode très verbose
ssh -vv nom_utilisateur@serveur
# Mode extrêmement verbose
ssh -vvv nom_utilisateur@serveur
Commandes SSH utiles
Transfert de fichiers
Copier un fichier vers le serveur (SCP) :
scp fichier.txt nom_utilisateur@serveur:/chemin/destination/
Copier un fichier depuis le serveur :
scp nom_utilisateur@serveur:/chemin/fichier.txt ./
Copier un dossier vers le serveur :
scp -r mon_dossier/ nom_utilisateur@serveur:/chemin/destination/
Utiliser SFTP (plus sécurisé que SCP) :
sftp nom_utilisateur@serveur
Tunnels SSH (Port Forwarding)
Tunnel local (accéder à un service distant localement) :
ssh -L 8080:localhost:80 nom_utilisateur@serveur
Maintenant, localhost:8080 sur votre machine pointe vers localhost:80 sur le
serveur.
Tunnel distant (exposer un service local sur le serveur) :
ssh -R 8080:localhost:3000 nom_utilisateur@serveur
Tunnel dynamique (proxy SOCKS) :
ssh -D 1080 nom_utilisateur@serveur
Connexion SSH avec affichage graphique (X11 forwarding)
ssh -X nom_utilisateur@serveur
Ou pour une confiance complète :
ssh -Y nom_utilisateur@serveur
Exécuter une commande à distance sans ouvrir de session
ssh nom_utilisateur@serveur 'commande à exécuter'
Exemple :
ssh root@serveur 'df -h'
Maintenir la connexion active
Pour éviter les déconnexions automatiques, ajoutez à ~/.ssh/config :
Host *
ServerAliveInterval 60
ServerAliveCountMax 3
Connexion en arrière-plan (sans terminal)
ssh -f nom_utilisateur@serveur 'commande'
Compression des données
Pour les connexions lentes :
ssh -C nom_utilisateur@serveur
Récapitulatif des commandes essentielles
# Générer une clé Ed25519
ssh-keygen -t ed25519 -C "votre.email@example.com"
# Copier la clé sur le serveur
ssh-copy-id -i ~/.ssh/id_ed25519.pub nom_utilisateur@serveur
# Se connecter
ssh nom_utilisateur@serveur
# Ajouter la clé à l'agent
ssh-add ~/.ssh/id_ed25519
# Lister les clés dans l'agent
ssh-add -l
# Vérifier l'empreinte d'une clé
ssh-keygen -l -f ~/.ssh/id_ed25519.pub
# Changer/supprimer la passphrase
ssh-keygen -p -f ~/.ssh/id_ed25519
# Redémarrer SSH (systèmes modernes)
sudo systemctl restart ssh
# Redémarrer SSH (systèmes anciens)
sudo service ssh restart
Conclusion
Vous savez maintenant comment configurer SSH de manière complète et sécurisée sur votre serveur VPS. Les points clés à retenir :
✅ Utilisez Ed25519 pour vos nouvelles clés SSH (plus rapide et sécurisé que RSA)
✅ Configurez l’authentification par clés plutôt que par mot de passe
✅ Utilisez le fichier ~/.ssh/config pour simplifier vos connexions
✅ Utilisez ssh-agent ou keychain pour éviter de retaper votre passphrase
✅ Sécurisez votre serveur en désactivant l’authentification par mot de passe et la connexion root
✅ Installez Fail2ban pour protéger contre les attaques brute-force
✅ Changez le port SSH par défaut (22) pour réduire les attaques automatisées
✅ Utilisez systemctl sur les systèmes modernes et service sur les anciens
Pour aller plus loin, consultez la documentation officielle OpenSSH et les guides de sécurisation de votre distribution Linux.
Mots-clés : SSH, connexion serveur VPS, clé SSH, authentification SSH, sécurité serveur Linux, OpenSSH, tutorial SSH, configuration SSH, ssh-keygen, serveur distant, Ed25519, Fail2ban, systemctl, service ssh.

