Voici quelques infos pour créer un jeu de clés ssh afin de sécuriser l’accès à un serveur Linux vps / dédié. Cette méthode de connexion Permet de sécuriser l’authentification à votre serveur elle sera à privilégier pour augmenter la sécurité et la facilité de gestion de vos vps.

La génération de ce jeu de clés permet d’obtenir, une clé privée, que vous conserverez de votre côté sur votre machine de travail et une clé publique, qui sera mise en place pour authentifier votre utilisateur sur votre serveur vps.

Une fois les clés en place nous désactiverons la possibilité de se connecter en root & l’authentification par login / mot de passe. Attention ! Une fois configuré le seul moyen de récupérer une connexion root sera de passer par la console de rescue de votre hébergeur il faudra donc veillez à avoir ces accès au préalable.

La génération de ce type de clé permet aussi l’accès et l’utilisation des services tel que Bitbucket, DockerHub ou Github par exemple.

Génération de la keypair ssh

Sur Windows il n’existe pas à proprement parlé de paquet openssl qui va nous permettre de générer notre clé ssh. Personnellement j’utilise depuis un bon moment maintenant le Terminal Cmder. Celui-ci embarque git-bash for Windows dans sa version complète et va nous permettre de générer notre jeu de clé très facilement.

Une fois télécharger vous pouvez extraire le répertoire cmder dans votre ProgramFiles et exécuter cmder.exe. (que je vous conseille d’attacher à votre menu démarrer par exemple) Puis depuis le terminal taper bash

Démarrer bash depuis cmder

Une fois dans bash vous aller circuler dans le répertoire de votre utilisateur sur votre machine Windows et créer le répertoire .ssh qui contiendra vos clés

cd C:\Users\pixxl\ mkdir .ssh cd .ssh\ ssh-keygen.exe

Dans mon cas je n’ai pas généré de mot de passe sur la clé, c’est à vous de juger de l’intérêt de la chose, sachant que le mot de passe vous sera alors demander lors de l’authentification à votre serveur…

Votre keypair est générée dans le répertoire .ssh de votre machine.

Dans le répertoire .ssh vous avez désormais deux fichiers :

id_rsa : c’est votre clé privée, elle est à conserver sur votre machine de travail (il est bon d’en faire un backup)

id_rsa.pub : votre clé publique qui sera copiée sur votre serveur et qui permettra d’authentifier votre utilisateur par échange de clé.

Configuration SSHD sur votre serveur

Maintenant vous pouvez vous connecter en root sur votre serveur, et créer un nouvel utilisateur pour lui assigné la clé publique nouvellement crée. Les exemples suivants ont été fait sur une machine Ubuntu 18.04, les commandes seront a adaptées en fonction de votre distribution.

Si votre utilisateur est déjà crée sur le serveur vous avez la possibilité d’insérer votre clé ssh publique directement depuis votre commande bash de votre machine de travail avec la commande suivante :

ssh-copy-id pixxl@ip_server

Sinon nous allons créer l’utilisateur, lui permettre d’être sudoers et enfin créer sont fichier authorized_keys qui contiendra sa clé publique :

sudo adduser pixxl sudo adduser pixxl sudo sudo mkdir /home/pixxl/.ssh sudo vim /home/pixxl/.ssh/authorized_keys

Redémarrer le service ssh

sudo service ssh restart

Vous pouvez à ce moment vous déconnecter de votre session root et tenter la connexion avec votre nouvel utilisateur depuis Cmder

ssh pixxl@ip_server

Vous parviendrez normalement à vous connecter à celui-ci sans prompt de mot de passe.

Sécurisation SSHD

Enfin nous allons paramétrer ssh afin de ne plus autoriser la connexion de Root et désactiver les logins sans clé pour cela éditer (ou décommenter) les deux lignes suivantes dans le fichier sshd_conf

sudo vim /etc/ssh/sshd_conf PasswordAuthentication no PermitRootLogin = no sudo service ssh restart

Modifications du fichier sshd.conf

Vous pourrez alors tester de vous reconnecter en root, vous obtiendrez alors l’erreur suivante :

root@ip_server : permission denied (publickey)

Par contre la connexion avec votre utilisateur devrait se passer sans encombres. Voilà qui devrait dans un premier temps sécurisé les accès d’administration à votre serveur. J’expliquerai les étapes à mettre en place ensuite pour sécuriser de façon basique un serveur vps au niveau iptables & fail2ban dans un autre billet.