Putty client SSH

Le SSH avec Putty

Cet article a été réactualisé il y a 6 ans jours. Il n'est pas nécessairement obsolète, mais gardez son ancienneté en tête lors de sa lecture.

Quand il est question de communiquer avec un serveur d’hébergement web, le faire en SSH simplifie pas mal de choses pour la maintenance.

Le SSH sous Windows

Sous Windows, pour communiquer en SSH, une des solutions c’est d’utiliser Putty.

En fait, c’était surtout vrai jusqu’au jour où Microsoft a mis à disposition :

  • un client OpenSSH (ainsi qu’un serveur OpenSSH) en fonctionnalités facultatives à activer dans ses paramètres système. Mais comme cette possibilité sous Win10 est restée pas mal de temps en Beta, je suis restée avec mon utilisation de Putty parce qu’il est simple à utiliser et j’ai l’habitude de fonctionner avec.
  • WSL : sous sytème Windows pour Linux qui fait qu’en pouvant utiliser bash sur Windows, on a du coup tout ce qu’il faut pour communiquer en SSH de façon native.

Je ne me servirai donc peut être plus de Putty sous peu, mais je préfère garder un mémo de son installation et utilisation ici.

Télécharger le client Putty

Charger la dernière version de l’installeur de Putty sur le site officiel : https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

Prendre le Package files MSI(‘Windows Installer’) il contient des utilitaires qui seront utiles en plus de l’outil Putty de base.

Les utilitaires additionnels dans ce package sont PuttyGen qui sert à générer des clés publiques/privées, Pageant qui est un agent d’authentification , PSFTP c’est le client SFTP de Putty pour transférer des fichiers, et le manuel Putty.

Rassembler ses informations d’accès SSH

Forcément à la base pour que ça fonctionne il faut que le serveur permette cette connexion SSH. C’est généralement possible, même sur des hébergements mutualisés. Vérifiez quand même ! Par exemple sur OVH il faut au minimum l’offre Pro, (Kimsufi et Perso ne le permettent pas), chez O2switch, il faut juste leur demander, chez Infomaniak, c’est possible de base.

Nom de domaine du serveur ou son adresse IP

Nom d’utilisateur SSH et Mot de passe autorisant l’accès au serveur.

S’authentifier avec Login/mot de passe

Ouvrir le client Putty, on obtient cette fenêtre :

Fenêtre Putty

Dans la partie Host Name (en jaune sur l’image précédente), entrer le nom de domaine du serveur (ou son adresse IP).

On se connecte sur le port 22 c’est le port Secure Shell (SSH), un clic sur Open et c’est tout pour le moment.

Si vous suivez ce tuto, c’est que c’est probablement la première fois que vous vous connectez à un serveur en SSH.
Vous allez voir s’ouvrir une boite de dialogue « Alerte Sécurité » de Putty. Elle vous avertit que la clé hôte du serveur n’est pas mise en cache dans le registre. Ce message d’alerte est normal lorsque vous vous connectez à un serveur pour la première fois. Chaque connexion SSH vérifie l’identité du serveur (par sa clé d’hôte ~/.ssh/known_hosts) puis celle du client (par mot de passe ou clé publique ~/.ssh/authorized_keys). Si vous obtenez cette « alerte » avec un serveur avec lequel vous avez déjà effectué cette première connexion, cela pourrait signifier que quelqu’un essaie de détourner secrètement votre tentative de connexion en se faisant passer pour votre serveur (d’hébergement par exemple) pour récupérer vos identifiant et mdp et s’en servir ensuite en se faisant passer pour vous. On parle d’attaque « man-in-the-middle » . La clé d’hôte ( ici, la clé publique du serveur ) est un identifiant unique pour une machine, quand vous en approuvez une, avec Putty elle se stocke (comme le dit l’alerte) dans votre PC au niveau de la base de registre. Sinon, les fingerprints qu’on a approuvés sont visibles  dans un fichier known_hosts dont on parlera plus loin.

Alerte de sécurité Putty

Alors là, on fait comment pour savoir s’il s’agit bien de la bonne clé de chiffrement ? et bien … sans contacter l’administrateur système du serveur distant pour qu’il vous communique les différentes empreintes possibles (certains serveurs peuvent en avoir plusieurs) on ne peut pas. Dans la majorité des cas, le risque étant faible, on ne fait pas de vérification, c’est à chacun de voir ce qu’il accepte de prendre comme risque ou pas.

Cliquez sur « Oui » pour confirmer que c’est bien le serveur auquel vous voulez vous connecter. Le serveur et le client vont alors s’échanger une clé de chiffrement. Ensuite le serveur va vous demander au bout de quelques secondes votre mot de passe.

Une console s’ouvre, c’est un émulateur de console UNIX pour Windows, elle affiche login as:

Login Putty

Renseigner votre nom d’utilisateur après Login as : Vous pouvez l’entrer en toute sécurité, la communication est chiffrée, puis taper sur Entrée.

Vous devrez ensuite saisir votre mot de passe et taper sur Entrée (NB : Vous ne verrez aucune indication sur l’écran lors de la saisie de votre mot de passe, pas même des ***)

Et vous serez connecté sur votre serveur, on dit qu’on a ouvert une session.

Pour se déconnecter proprement de la console, fermer la session en envoyant au serveur la commande logout ou exit ou la combinaison de touches Ctrl + D.

S’authentifier via une paire de clés publique/privée

L’authentification par mot de passe étant relativement vulnérable (mot de passe trop facile à découvrir… ) Une autre méthode d’authentification consiste à le faire via l’utilisation d’une paire de clés, publique et privée, que vous devez générer (ce sont vos clés client). La clé permet de garantir au serveur qu’on est bien l’utilisateur qu’on prétend être.

Un peu plus compliquée à mettre en place, ce n’est pas insurmontable pour autant, et ce sera plus pratique et plus rapide pour se connecter par la suite. Vous n’aurez pas besoin de fournir de mot de passe à chaque fois, parce que vous aurez déclaré votre ordinateur en tant qu’hôte de confiance au serveur.

L’authentification par clé fonctionne grâce à 3 composants :

  • Une clé publique : elle sera exportée sur chaque serveurs sur lesquel on souhaite pouvoir se connecter. On se déclare en tant que machine de confiance.
  • Une clé privée : elle sert à prouver son identité aux serveurs.
  • Une passphrase : Permet de sécuriser la clé privée par un chiffrement. Elle n’est pas obligatoire mais accroît la sécurité.
Putty Key Generator

Au niveau des réglages j’ai laissé ceux par défaut : Générer des clés RSA de longueur 2048bits. Si vous allez dans l’onglet key l’option cochée est SSH-2 RSA Key.

  1. Il suffit de cliquer sur « Generate », bouger la souris dans la fenêtre pour générer les clés.
  2. Ajouter une passphrase (pas obligatoire mais vraiment conseillé)
  3. Cliquer sur Save public key. La nommer comme bon vous semble (ex : mykey.pub) et la ranger dans votre compte utilisateur dans un dossier « .ssh ». La clé est donc atteignable via ce chemin : C:\Users\VotreNomUtilisateur\.ssh\mykey.pub
  4. Cliquer sur Save private key. La nommer de la même façon, l’extension sera cette fois .ppk (putty private key) ajoutée automatiquement par Putty. Elle se range aux cotés de la clé publique : C:\Users\VotreNomUtilisateur\.ssh\mykey.ppk 
  5. Et c’est tout. Gardez PuttyGen ouvert, on va en avoir besoin pour copier la clé publique et l’envoyer sur le serveur.

Envoyer sa clé publique sur le serveur

Il faut envoyer sa clé publique au serveur pour qu’il nous autorise à nous connecter par clé. Sur le serveur on va ajouter, s’il n’existe pas déjà, un dossier contenant un fichier de clés autorisées => ~/.ssh/authorized_keys

Comme on est sur un Windows, Il va falloir ajouter la clé à la main dans le fichier authorized_keys à la racine de l’espace où on a l’autorisation d’aller (et oui sous MAC ou une distribution Linux, on peut utiliser une commande pour le faire de façon automatique : ssh-copy-id)

  1. se  connecter au serveur via SSH
  2. créer un répertoire « .ssh » mkdir .ssh
  3. modifier les droits du répertoire « .ssh » en chmod 700 (700 = Owner : Read / Write / Execute ou rwx——) chmod 700 .ssh
  4. se placer dans le dossier .ssh : cd .ssh , on va créer le fichier authorized_keys et y coller sa clé SSH publique sur une seule ligne (important de ne pas ajouter d’espace ou de retour chariot). 
    L’écriture à passer dans la console sera du type : echo "votre_cle" >> authorized_keys
    Si vous avez gardé PuttyGen ouvert vous n’avez qu’a récupérer la clé publique que vous aviez générée tout à l’heure.
    Envoyer sa clé publique sur le serveur

    Copier la clé Ctrl + C présente dans la zone « Public key for pasting… ». Ensuite pour coller la clé dans la console, utilisez la combinaison de touches Shift + Inser plutôt que Ctrl+V.
  5. une fois fait, vérifier les droits du répertoire « authorized_keys » qui doit être en chmod 600 (600 = Owner : Read / Write ou rw——-) chmod 600 authorized_keys

Si vous voulez vérifier les différents répertoires et fichiers en les affichant sous forme de liste, le dossier .ssh étant un fichier caché, utiliser la paramètre -a en plus de -l : ls –al

Se déconnecter de Putty et le relancer, on va maintenant le configurer pour qu’il se connecte à l’aide de la clé.

Configurer Putty

Au niveau de l’arborescence de configuration de Putty sur la gauche de la fenêtre, aller dans Connection/SSH/Auth, puis cliquer sur Browse pour sélectionner votre clé privée (celle en .ppk) stockée dans votre PC.

Configurer Putty

Dans Connection/Data ajouter votre login dans Auto-login username, il viendra s’ajouter automatiquement lors d’une connexion par la suite.

Auto login Name Putty

Retourner dans Session pour se connecter cette fois avec les clés.

De la même façon que tout à l’heure ajouter le Host Name, mais pour ne plus avoir à le rentrer à chaque fois que vous ouvrez Putty, ajouter dans Saved Sessions un nom représentatif de l’hébergement sur lequel vous vous connectez et cliquez sur Save, il s’ajoutera sous Default settings automatiquement, puis enfin faire Open.

Saved Session Putty

La console Putty s’ouvrira en ajoutant automatiquement votre « username« , s’authentifiera avec votre clé publique, il ne reste qu’à entrer votre passphrase (là, comme pour le mot de passe tout à l’heure, vous ne verrez rien s’afficher en l’écrivant, pas même des ***).

Rendre la connexion plus « User Friendly »

Alors, maintenant il n’est plus nécessaire de rentrer le mot de passe à chaque fois, mais la Passphrase oui. Pour éviter ça aussi, utiliser Pageant (Putty authentication agent). Il était livré avec Putty dans le package .msi qui a été chargé. En l’activant, il s’affiche dans la barre de tâche du PC près de la date et heure.

Faire un clic droit sur l’icône, dans Add Key, ajouter sa clé privée (le chemin vers elle), puis la passphrase et vous n’aurez plus à le faire tant que vous n’aurez pas quitté Pageant avec l’onglet Exit ou éteint le PC.

Cette manipulation permet de se connecter directement sur les Saved Sessions qu’on a configurées auparavant. Ca rend les choses plus simples et on gagne du temps.

Se connecter avec Pageant

Le fichier known_hosts

Le fichier known_hosts se crée dans le dossier .ssh au niveau du user : ~/.ssh/known_hosts donc aux cotés de vos clés publiques / privées. C’est votre client SSH qui se charge de ça (ici Putty) Le fichier known_hosts contient la liste de chaque serveur auxquels vous vous êtes déjà connectés (ceux dont vous avez approuvé les fingerprints) avec leur clé publique correspondante.

Ce fichier est nécessaire car dès lors que vous vous connecterez sur votre serveur habituel, le fingerprint sera toujours comparé à ceux que vous avez déjà approuvés. Si vous obtenez une alerte de sécurité, cela signifie alors qu’il y a un problème :

  • soit vous avez fait une erreur au niveau du nom d’hôte à atteindre,
  • soit votre serveur a changé de clé : ça arrive,
  • soit c’est une probable attaque « man-in-the-middle ».

Windows 10 et SSH

Comme je le disais au début, Windows 10 permet maintenant d’intégrer un sous système pour linux, du coup on peut opter pour une suppression de Putty de son PC si on souhaite utiliser cette nouvelle possibilité.

Par contre pour se connecter par clé il faudra en régénérer de nouvelles, leur nommage est différent : id_rsa.pub et id_rsa