libremaster-v4-photo
Christophe T.
Expert administrateur de serveurs Linux depuis 1997.

Conseil en hébergement web de Logiciels Libres

Référent technique des expatriés francophones

Créer une clé SSH solide pour ses serveurs Linux

Ce tutoriel est trop long ou trop compliqué ?

Demandez-moi une prestation pour vous aider ou le faire pour vous

Chez la plupart des hébergeurs, juste après la livraison de votre serveur Linux, vous recevrez un identifiant et un mot de passe de connexion par SSH.

Vous pouvez effectivement commencer à travailler de cette façon…si vous débutez.

Mais si vous voulez renforcer la sécurité de votre connexion et de votre serveur, voici ce qu’il faut faire :

  • activer la connexion par clé SSH, si possible dès l’installation initiale du serveur
  • bloquer la connexion par mot de passe (au moins pour l’administrateur root) tout en laissant la connexion par clé
  • permettre la connexion au compte root directement et supprimer le compte utilisateur créé par défaut (celui qui permet de se connecter root avec la commande sudo)

On va voir dans ce tutoriel comment générer une clé SSH et l’installer sur le compte utilisateur intermédiaire.

En fait, nous allons créer deux paires de clés de format différent :

  • une paire de clé de type ed25519 : solide et récente mais tous les outils ne la reconnaissent pas encore.
  • une paire de clé de type rsa (vieux système) et utilisable partout.

Choisissez le système que vous utilisez sur votre poste de travail et suivez les étapes pour préparer et/ou installer votre clé SSH sur votre serveur :

1. Ouvrir un terminal

Si vous êtes sous Linux, ouvrez « gnome-terminal »

Si vous êtes sous Windows 10, ouvrez le « Powershell »

2. Génération des deux paires de clé (même commande Windows/Linux)

Choisissez une bonne phrase de passe et longue pour protéger vos clés comme indiqué dans cette page.

Lancez ces deux commandes :

				
					ssh-keygen -t ed25519
				
			
				
					ssh-keygen -t rsa -b 4096
				
			

Résultats avec powershell (équivalent sous Linux) :

3. Stocker ces clés dans le manager OVH (si vous hébergez vos serveurs chez OVH) sinon demandez à votre hébergeur si l'option est disponible

Si la clé est disponible dans le manager alors elle sera installée lors de l’installation initiale d’un serveur. Aucun mot de passe ne vous sera alors envoyé par courriel.

La section pour mettre sa clé n’est pas facile à trouver mais c’est ici.

  • La clé de type ed25519 peut être mise en tant que clé « dédié » (VPS, serveur dédié).
  • La clé de type rsa peut être mise pour le public cloud (ce service OVH est en cours de mise à jour, peut-être que l’autre format sera supporté d’ici peu de temps).

Cliquez sur « Ajouter une clé SSH / Dédié » :

Copier la clé en mémoire à l'aide du terminal

Utilisez la commande « cat » pour afficher la clé (surtout pas la commande more  !)

Avec Powershell sous Windows :

Sélectionnez le texte de la clé avec la souris et appuyez sur ctrl+c pour copier en mémoire et ctrl+v dans la fenêtre OVH

Avec le terminal sous Linux :

				
					cat ~/.ssh/id_ed25519.pub 
				
			

Sélectionnez la clé avec la souris puis clic droit et copier.

Collez la clé dans le manager OVH :

Donc normalement, lorsque votre serveur sera installé, il faudra préciser la clé à installer au moment du choix du système à installer (Debian étant le meilleur choix, cela va de soi).

4. Envoyer sa clé vers son serveur Linux VPS si celui-ci est déjà installé (sans votre clé)

Pensez à remplacer l’identifiant « debian » par le bon et le nom du serveur par votre serveur. Par la suite, il sera possible de configurer une connexion en root directement et de supprimer l’utilisateur intermédiaire.

Avec Powershell sous Windows (j'ai affiché le prompt) :

				
					PS C:\Users\K822> cat ~/.ssh/id_ed25519.pub | ssh debian@vps-xxx.vps.ovh.net "cat >> ~/.ssh/authorized_keys"
				
			

Avec le terminal sous Linux (j'ai affiché le prompt) :

				
					k822@lap21:~ $ ssh-copy-id -i .ssh/id_ed25519.pub debian@vps-xxx.vps.ovh.net
				
			

5. Configurer le service ssh-agent sous Windows (c'est déjà automatique sous Linux en théorie)

Lancer un Powershell en tant qu'administrateur :

				
					PS C:\Users\K822> Start-Process Powershell -Verb runAs
				
			

Windows affiche une fenêtre pour confirmer et lancer un nouveau PowerShell par dessus l’autre (en bleu aussi mais j’ai mis un peu de rouge ici)

Changer la configuration d'un service dans le nouveau shell

				
					PS C:\Windows\system32> Get-Service -Name ssh-agent | Set-Service -StartupType Manual
exit
				
			

Ajouter les clés dans l'environnement

Ici, on a fermé le shell administrateur et on est revenu dans le shell utilisateur (vérifiez le prompt)

				
					PS C:\Users\K822> ssh-agent
PS C:\Users\K822> ssh-add
				
			

6. C'est fini !

Il ne vous reste plus qu’à vous connecter au serveur.

				
					k822@lap21:~ $ ssh debian@vps-xxx.vps.ovh.net