ssh VIA CLÉ PUBLIQUE ET PRIVÉ

ssh VIA CLÉ PUBLIQUE ET PRIVÉ

Un rapide post-it pour une explication claire des clé publique et privé pour le protocol ssh.

C’est très utile pour ne pas utiliser le login de l’utilisateur lors de la négociation de connexion ssh et ainsi maximiser la sécurité.

Chaque postes qui voudrons se connecter devront exporter une clé sur le serveur et lors de la connexion un mot de passe de sécurité (généré lors de la création des clés et donc différent de celui de l’utilisateur) sera demandé.

La protection n’est pas ultime mais déjà bien avancée. Mais alors comment faire ?

Sur le poste client

On va créer nos clé privé et publique puis les exporter sur le poste serveur.
Cet exemple ne traitera que de la partie Linux car à l’heure actuelle on sait faire exactement la même chose sur android via Termux et sur Windows avec Terminal.

Dans un terminal :

ssh-keygen -o -b 4096

On demandera le répertoire de stockage des clés.
ENTER pour valider le choix par défaut.

Ensuite la passphrase, c’est un moment très important, c’est le mot de passe pour valider vos clé et donc à retenir par la suite.

Les clé serons stocké dans ~/.ssh

tree .ssh/
.ssh/
├── id_rsa
├── id_rsa.pub
└── known_hosts

0 directories, 3 files

Ensuite on va exporter la clé privé vers le serveur.

ssh-copy-id -i ~/.ssh/id_rsa user@server

Equivalent pour Windows.

type $env:USERPROFILE\.ssh\id_rsa.pub | ssh user@server "cat >> .ssh/authorized_keys"

Equivalent sans installation de ssh-copy-id.

cat ~/.ssh/id_rsa.pub | ssh user@server "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

On demandera le mot de passe de l’utilisateur du serveur.

Et si tout c’est bien passé, on lance la commande ssh classique et on met la passphrase pour entrer sur le serveur.

ssh user@server

La passphrase peut-être enregistrée dans le trousseau de clé de votre système, mais alors on baisse le niveau de sécurité…

Edit :

Si jamais vous avez plusieurs clé publiques on lancera la commande ssh avec l’argument -i suivi du chemin vers la bonne clée et le tour est joué.