Lorsque l’on débute dans le domaine de l’administration serveur, une des premières tâches est la gestion des clés ssh. En effet, sans la fameuse connexion ssh sécurisée, il est quasi impossible de gérer un serveur à distance.
Dans cet article nous allons voir comment créer des clés ssh et les utiliser afin d’établir conjointement des connexions ssh et sftp.
La plupart du temps, lorsque vous louez un serveur, un mot de passe vous est attribué pour vous authentifier lors de votre première connexion. En revanche, d’autres hébergeurs que je qualifierais de plus prudents, vous demandent une clé ssh lors de la création ou mise en service de votre serveur.
Quoiqu’il en soit, je ne peux que vous conseiller d’abandonner l’authentification à votre serveur via mot de passe. Utilisez plutôt le système de clés privée/publique pour vous connecter à votre machine (virtuelle ou dédiée).
Création de votre clé ssh
Les exemples ci-dessous sont décris sous un environnement Debian Jessie (local et serveur distant). Ces commandes sont valables pour les distributions les plus connues.
Dans un premier temps placez-vous dans le dossier .ssh de votre dossier utilisateur.
antoine@lewebdantoine:~$ cd /home/utilisateur/.ssh/
Créons les clés publiques et privées, il est possible d’utiliser l’algorithme de génération de clé DSA ou RSA (par défaut) avec l’option -t, par exemple ssh-keygen -t dsa. Pour notre exemple nous générerons la clé avec l’algorithme RSA, proposé par défaut.
antoine@lewebdantoine:~/.ssh$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/antoine/.ssh/id_rsa): cledantoine Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in cledantoine. Your public key has been saved in cledantoine.pub. The key fingerprint is: 6e:68:3e:86:89:d0:5c:c8:26:76:c5:ec:03:b7:29:7f antoine@lewebdantoine The key's randomart image is: +---[RSA 2048]----+ | o | | . = | | . .= o | |..+o.= | |.=..o . S | |. o . E | | . . o+ o | | . ooo. | | ... | +-----------------+
Suite à la l’exécution de la commande ssh-keygen, il nous est demandé à la ligne 3 le nom de la clé qui est dans notre cas « cledantoine ».
Les lignes 4 et 5 concernent la création d’une phrase de passe (passphrase) qui nous permettra d’avoir une authentification bien plus forte. Attention à ne pas égarer celle-ci, sans quoi la connexion au serveur n’est plus possible. Bien que je vous le déconseille, vous pouvez ne rien entrer, ainsi la connexion à votre serveur se fera uniquement avec le couple clé publique/privé.
Les lignes 6 et 7 nous indiquent que la clé publique « cledantoine.pub » et la clé privée « cledantoine » ont été créées. Ces deux clés jouent un rôle crucial dans l’authentification, la clé privée restera sur votre poste de travail alors que la clé publique sera destinée à être copiée sur votre serveur distant.
Copie de la clé ssh sur le serveur distant
Deux cas peuvent de présenter à vous, la clé ssh est requise par votre hebergeur pour la création du serveur ou bien il vous faudra copier la clé après création du serveur.
La clé ssh vous est demandée à la création du serveur par l’hébergeur
Dans ce cas il vous faudra copier votre clé nouvellement créée dans le champs spécifié par votre hébergeur en la copiant au préalable dans un fichier texte.
antoine@lewebdantoine:~/.ssh$ cat cledantoine copie_cle_ssh.txt
La clé ssh doit être copiée sur le serveur distant
La commande suivante permet d’effectuer cette opération automatiquement sans devoir copier manuellement votre clé sur le serveur distant.
ssh-copy-id -i ~/.ssh/votre_cle.pub utilisateur_distant@serveur_distant
Dans ce cas le mot de passe qui vous a été fourni par l’hébergeur vous sera demandé pour que le transfert de la clé se fasse sur votre serveur distant. L’opération terminée, vous êtes invités à vérifier le bon déroulement de la copie de votre clé.
Connectez-vous à votre serveur et regardez le contenu du fichier authorized_keys dans le dossier .ssh
sudo vi /home/utilisateur_distant/.ssh/authorized_keys
Vous devriez voir votre clé publique dans ce fichier. A noter que vous pouvez directement copier votre clé publique dans authorized_keys.
Connexion au serveur par clé ssh
Il est important de souligner qu’à ce stade il est toujours possible de vous authentifier par mot de passe. Pour se connecter strictement par clé ssh il vous faudra modifier le fichier /etc/ssh/sshd_config sur votre serveur distant.
PasswordAuthentication no UsePAM no
Au cours du temps vous aurez sans doute plusieurs serveurs à gérer et par conséquence plusieurs clé à employer. Je ne vais pas m’aventurer avec l’utilisation de l’agent ssh dans cet article mais préfère vous donner les commandes afin d’utiliser une clé spécifique parmi d’autres, lors de votre authentification.
Connexion ssh
C’est la connexion qui vous permettra d’effectuer la majeure partie de vos travaux d’administration.
ssh -i ~/.ssh/cledantoine -p 22 utilisateur_distant@ip_serveur_distant
L’option -i vous permet de spécifier le chemin de votre clé privée, et l’option -p permet de préciser le port de connexion (22 par défaut).
Connexion sftp
Cette connexion va autoriser les échanges de fichiers de manière sécurisée en empruntant le tunnel ssh. Attention à ne pas confondre sftp et ftps qui nécessite un serveur ftp.
sftp -o IdentityFile=~/.ssh/cledantoine -P 22 utilisateur_distant@ip_serveur_distant
Si vous souhaitez utiliser l’option du port, pensez bien au P majuscule.
La gestion des clés ssh est primordiale pour une authentification sécurisée à votre serveur. In extenso, ce système de clé permet également de faire communiquer deux serveurs, par exemple pour l’échange de fichiers sauvegarde. Pensez bien à utiliser une phrase de passe robuste, pour cela n’hésitez pas à consulter cet article sur le logiciel opensource keepass.
Article rédigé et publié par
le