Se connecter à un VPS en SSH par clé (sans mot de passe)
L'authentification par clé SSH est plus sûre et plus pratique qu'un mot de passe. Voici comment générer votre paire de clés, l'installer et verrouiller l'accès.
Pourquoi utiliser une clé SSH sur un VPS ?
Une clé SSH VPS permet de vous connecter sans transmettre ni saisir le mot de passe du compte Linux à chaque session. Elle repose sur une paire cryptographique composée d’une clé publique et d’une clé privée.
Le principe est simple :
- la clé publique est installée sur le VPS ;
- la clé privée reste sur votre ordinateur ;
- le serveur vérifie que vous possédez la clé privée correspondante ;
- la clé privée n’est jamais envoyée au VPS.
Cette méthode limite notamment les risques liés aux mots de passe faibles, réutilisés ou soumis à des tentatives automatisées. Elle est aussi plus pratique pour les connexions régulières, les transferts SFTP et certains déploiements automatisés.
| Élément | Emplacement | Peut être partagé ? |
|---|---|---|
| Clé publique | Ordinateur et VPS | Oui |
| Clé privée | Uniquement sur votre appareil | Non |
| Passphrase | Connue uniquement de vous | Non |
authorized_keys | Compte utilisateur du VPS | Non publiquement |
Une passphrase peut chiffrer la clé privée sur votre ordinateur. Même si le fichier est copié, son utilisation reste alors protégée par cette phrase secrète.
Avant de commencer, vous devez pouvoir vous connecter au VPS avec votre accès actuel. Consultez le guide pour vous connecter à un VPS en SSH si cette première connexion n’est pas encore fonctionnelle.
Générer une paire de clés Ed25519
OpenSSH fournit la commande ssh-keygen sous Linux, macOS et les versions modernes de Windows disposant du client OpenSSH.
Ouvrez un terminal sur votre ordinateur, et non sur le VPS, puis exécutez :
ssh-keygen -t ed25519 -C "vps-talcloud"
Le commentaire peut correspondre à votre ordinateur ou à l’usage de la clé :
ssh-keygen -t ed25519 -C "ordinateur-bureau"
Le programme vous propose un emplacement :
Enter file in which to save the key
Appuyez sur Entrée pour accepter le chemin par défaut.
Sous Linux et macOS :
~/.ssh/id_ed25519
~/.ssh/id_ed25519.pub
Sous Windows :
C:\Users\VOTRE_NOM\.ssh\id_ed25519
C:\Users\VOTRE_NOM\.ssh\id_ed25519.pub
Vous êtes ensuite invité à choisir une passphrase :
Enter passphrase
Une passphrase est recommandée, surtout sur un ordinateur portable ou partagé. Elle protège la clé privée si le fichier est récupéré par un tiers.
À la fin de la génération, deux fichiers existent :
id_ed25519
id_ed25519.pub
Ne les confondez pas lors de la copie.
Générer la clé sur le VPS puis télécharger la clé privée annule une partie de l’intérêt de la séparation. La paire doit être créée sur l’appareil depuis lequel vous vous connectez.
Distinguer la clé publique de la clé privée
La clé privée est le fichier sans extension :
id_ed25519
Elle doit rester exclusivement sur votre ordinateur. Ne l’envoyez jamais :
- par e-mail ;
- dans Discord ;
- dans un ticket de support ;
- sur GitHub ;
- dans un espace de stockage public ;
- directement sur le VPS ;
- dans une capture d’écran.
La clé publique possède l’extension .pub :
id_ed25519.pub
Son contenu ressemble à ceci :
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA... ordinateur-bureau
C’est uniquement cette ligne publique qui doit être ajoutée au VPS.
Vous pouvez afficher la clé publique sous Linux ou macOS avec :
cat ~/.ssh/id_ed25519.pub
Sous PowerShell :
Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub
Ne partagez jamais
id_ed25519. Seulid_ed25519.pubpeut être copié sur les serveurs auxquels vous souhaitez accéder.
Installer la clé publique sur le VPS
Utiliser ssh-copy-id
Sous Linux et sur certains environnements macOS, la méthode la plus simple consiste à utiliser :
ssh-copy-id -i ~/.ssh/id_ed25519.pub utilisateur@ADRESSE_IP
Exemple :
ssh-copy-id -i ~/.ssh/id_ed25519.pub benjamin@192.0.2.10
Si SSH utilise un port différent :
ssh-copy-id -i ~/.ssh/id_ed25519.pub -p PORT utilisateur@ADRESSE_IP
Le mot de passe actuel du compte est demandé une dernière fois. La commande ajoute ensuite la clé dans :
~/.ssh/authorized_keys
Installer manuellement la clé
Si ssh-copy-id n’est pas disponible, notamment dans certains environnements Windows, affichez la clé publique sur votre ordinateur et copiez toute la ligne.
Connectez-vous ensuite au VPS avec votre méthode actuelle :
ssh utilisateur@ADRESSE_IP
Créez le répertoire SSH :
mkdir -p ~/.ssh
chmod 700 ~/.ssh
Ouvrez le fichier des clés autorisées :
nano ~/.ssh/authorized_keys
Collez la clé publique sur une seule ligne, enregistrez, puis appliquez les permissions :
chmod 600 ~/.ssh/authorized_keys
Vérifiez que les fichiers appartiennent au bon utilisateur :
chown -R "$USER":"$USER" ~/.ssh
La structure attendue est la suivante :
/home/utilisateur/
└── .ssh/
└── authorized_keys
Les permissions doivent rester restrictives :
.ssh → 700
authorized_keys → 600
OpenSSH peut refuser une clé si le répertoire personnel, .ssh ou authorized_keys est accessible en écriture par d’autres utilisateurs.
Se connecter au VPS avec la clé SSH
Ouvrez un nouveau terminal sur votre ordinateur. Gardez votre première session ouverte pour disposer d’un accès de secours.
Testez la connexion :
ssh utilisateur@ADRESSE_IP
OpenSSH recherche automatiquement les clés placées dans ~/.ssh/.
Pour sélectionner explicitement la clé :
ssh -i ~/.ssh/id_ed25519 utilisateur@ADRESSE_IP
Sous PowerShell :
ssh -i $env:USERPROFILE\.ssh\id_ed25519 utilisateur@ADRESSE_IP
Si vous avez défini une passphrase, elle vous sera demandée. Vous pouvez utiliser ssh-agent pour éviter de la ressaisir à chaque nouvelle connexion.
Sous Linux ou macOS :
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
Sous Windows avec l’agent OpenSSH actif :
ssh-add $env:USERPROFILE\.ssh\id_ed25519
Vous pouvez aussi créer une configuration locale dans :
~/.ssh/config
Exemple :
Host mon-vps
HostName 192.0.2.10
User benjamin
IdentityFile ~/.ssh/id_ed25519
La connexion devient alors :
ssh mon-vps
Désactiver l’authentification SSH par mot de passe
Ne désactivez le mot de passe qu’après avoir validé la connexion par clé dans une deuxième fenêtre.
Gardez impérativement la session SSH actuelle ouverte. En cas d’erreur, elle vous permettra de corriger la configuration sans perdre l’accès au VPS.
Créez de préférence un fichier de configuration dédié :
sudo nano /etc/ssh/sshd_config.d/99-key-auth.conf
Ajoutez :
PubkeyAuthentication yes
PasswordAuthentication no
KbdInteractiveAuthentication no
Sur un système ne chargeant pas sshd_config.d, modifiez prudemment :
/etc/ssh/sshd_config
Vérifiez la syntaxe avant tout redémarrage :
sudo sshd -t
L’absence de sortie indique généralement que la syntaxe est valide.
Sur Debian ou Ubuntu, rechargez le service :
sudo systemctl reload ssh
Si le rechargement n’est pas possible :
sudo systemctl restart ssh
Sur d’autres distributions, le service peut s’appeler sshd :
sudo systemctl restart sshd
Sans fermer la session de secours, ouvrez un troisième terminal et testez :
ssh utilisateur@ADRESSE_IP
Testez également qu’une tentative sans clé est refusée :
ssh -o PubkeyAuthentication=no utilisateur@ADRESSE_IP
La connexion ne doit plus accepter le mot de passe.
Ne fermez jamais votre accès de secours avant d’avoir réussi une nouvelle connexion par clé après le rechargement de SSH.
Dépanner Permission denied (publickey)
Une erreur courante est :
Permission denied (publickey)
Commencez par lancer SSH en mode détaillé :
ssh -vvv -i ~/.ssh/id_ed25519 utilisateur@ADRESSE_IP
Vérifiez ensuite les points suivants :
| Problème | Vérification |
|---|---|
| Mauvais utilisateur | Contrôlez le nom avant @ADRESSE_IP |
| Mauvaise clé | Utilisez ssh -i avec le bon fichier |
| Clé publique incomplète | Vérifiez qu’elle tient sur une seule ligne |
| Permissions incorrectes | Appliquez 700 à .ssh et 600 à authorized_keys |
| Mauvais propriétaire | Utilisez chown -R avec le compte concerné |
| Agent vide | Contrôlez avec ssh-add -l |
| Mauvais port | Ajoutez -p PORT |
| Configuration invalide | Exécutez sudo sshd -t |
Sur le VPS, consultez les journaux :
sudo journalctl -u ssh -n 100 --no-pager
Sur certaines distributions :
sudo journalctl -u sshd -n 100 --no-pager
Si la clé fonctionne uniquement avec -i, ajoutez-la à ssh-agent ou configurez IdentityFile dans ~/.ssh/config.
Pour compléter la protection avec un pare-feu, les mises à jour et un compte non-root, consultez le guide pour sécuriser votre serveur Linux.
Des sauvegardes automatiques sont incluses pour vous aider à restaurer. Conservez aussi vos propres exports réguliers : vous restez responsable de vos données.
En résumé
- Une clé SSH VPS associe une clé publique installée sur le serveur à une clé privée conservée localement.
- Générez une paire Ed25519 avec
ssh-keygen -t ed25519. - Protégez la clé privée avec une passphrase.
- Ne partagez jamais le fichier
id_ed25519. - Copiez uniquement
id_ed25519.pubsur le VPS. - Utilisez
ssh-copy-idou ajoutez manuellement la clé à~/.ssh/authorized_keys. - Appliquez les permissions
700à.sshet600àauthorized_keys. - Testez la connexion dans une deuxième fenêtre avant de modifier SSH.
- Désactivez le mot de passe avec
PasswordAuthentication no. - Désactivez aussi l’authentification interactive avec
KbdInteractiveAuthentication no. - Validez la configuration avec
sudo sshd -tavant de recharger le service. - Gardez une session de secours ouverte jusqu’au dernier test.
- Pour utiliser une clé SSH VPS sur une infrastructure hébergée en France avec stockage NVMe, Anti-DDoS L3/L4/L7 inclus, panel de gestion et support francophone, découvrez les offres VPS TalCloud.