[by bohman - CC-BY]

Introduction

Si vous souhaitez vous authentifier localement via SSH à votre serveur Debian depuis votre terminal Putty sous Windows, ce tutorial est fait pour vous. Je me suis intéressé à faire fonctionner cet accès sécurisé à distance dans un réseau local avec un PC hôte et une machine virtuelle mais vous pouvez l'adapter en fonction de votre environnement.

Ce tutorial comporte 4 étapes :

  1. Configuration de VirtualBox
  2. Configuration du Client PuTTY
  3. Configuration du Serveur Debian
  4. Test client/serveur SSH (l'heure de vérité !)

Configuration de VirtualBox (Windows)

Vous avez installé votre distribution GNU/Linux Debian dans une VM VirtualBox. Cependant, la communication SSH ne peut se faire en local nativement. Nous allons donc utiliser un fichier batch pour nous faciliter le travail.

Création du fichier batch

1. On crée un fichier texte "VirtualBox_ssh.txt"

2. On copie ensuite le code suivant : (merci Emmanuel)

set VM="Debian"
set HostPort=2222
set GuestPort=22
set NomMapping=ssh
set Device=pcnet
E:
cd E:\PROGRAMMES\Oracle\VirtualBox
REM Pour supprimer ce mapping il suffit de lancer chacune de ces trois commandes sans le dernier argument
REM Ne pas oublier de redémarrer l'OS hôte pour que ces modifs soient prises en compte
REM Config ssh port 2222 -> 22
VBoxManage setextradata %VM% "VBoxInternal/Devices/%Device%/0/LUN#0/Config/%NomMapping%/HostPort" %HostPort%
VBoxManage setextradata %VM% "VBoxInternal/Devices/%Device%/0/LUN#0/Config/%NomMapping%/GuestPort" %GuestPort%
VBoxManage setextradata %VM% "VBoxInternal/Devices/%Device%/0/LUN#0/Config/%NomMapping%/UDP" 0
REM Visualiser la conf
VBoxManage getextradata %VM% enumerate
pause

3. On modifie le contenu selon notre configuration :

  • set VM="Debian" : mettre le nom de votre VM
  • set Device=pcnet : il est possible que ce soit "e1000" et non "pcnet". Pour le savoir :
    • clic-droit sur votre VM, puis Afficher le journal...
    • recherchez MAC et récupérez la valeur de Devices en dessous : [/Devices/pcnet/... ] ou  [/Devices/e1000/... ]

  • E: : mettre la racine correspondante à votre répertoire d'installation VirtualBox
  • cd E:\PROGRAMMES\Oracle\VirtualBox : remplacer par le chemin adéquat

4. On renomme le fichier avec l'extension .bat puis on exécute le batch

  • si tout va bien, vous devriez avoir le message suivant :

Rm : en cas de mauvaise manipulation, vous pouvez annuler vos modifications en supprimant les 3 arguments des lignes VBoxManage, à savoir "%HostPort%", "%GuestPort%" et "0" puis en ré-exécutant le batch.

Configuration du client PuTTY

Commençons par télécharger putty et puttygen sur le site officiel.

Génération des clés

  1. on lance puttygen.exe
  2. on choisit un type de clé : SSH-2-DSA (meilleure sécurité) en 1024 bits
  3. on génère un couple de clés privée/publique : Generate
  4. on renseigne une passphrase (optionnel mais conseillé) : Key passphrase
  5. on enregistre la clé privée : Save private key en lui donnant un nom : "client_id_dsa"
  6. on copie/colle la clé publique (Public key) dans un fichier texte : "client_id_dsa.pub"

Rm : la clé privée ne doit jamais être communiquée à une autre machine

Configuration de PuTTY


  1. on lance putty.exe
  2. on précise le nom du serveur ou l'adresse IP : localhost
  3. on modifie le numéro de port du serveur (si besoin) : 2222
  4. on donne un nom à notre profil : ssh debian
  5. on modifie l'encodage des caractères dans Window/Translation : UTF-8 (gestion des accents)
  6. dans Connection/SSH/Auth, on va chercher notre clé privée : client_id_dsa
  7. on retourne sur Session et on clique sur Save pour sauvegarder notre profil

Configuration du Serveur Debian

Installation d'openssh-server

  • on installe le paquet openssh-server : # aptitude install openssh-server
    • Note : cela créera automatiquement dans "/etc/ssh/" les clés DSA : ssh_host_dsa_key, ssh_host_dsa_key.pub et les clés RSA : ssh_host_rsa_key, ssh_host_rsa_key.pub
  • sur notre compte user, on génère un couple clé privée / clé publique : $ ssh-keygen -t dsa
  • on laisse la localisation par défaut : Entrée
  • on choisit une passphrase et on valide

Ajout de la clé publique client au serveur

  • sur notre compte user, on crée le fichier authorized_keys : $ touch ~/.ssh/authorized_keys
  • on copie ensuite la clé publique du client dans le fichier authorized_keys : cat /mnt/partage/client_id_dsa.pub  >> ~/.ssh/authorized_keys
  • on vérifie que le fichier authoriezd_keys contient la clé publique : cat ~/.ssh/authorized_keys (pas de retours à la ligne, sauf entre clés publiques différentes)

Rm : je pars du principe qu'un partage a déjà été créé entre VirtualBox et Windows (/mnt/partage/) et que la clé publique "client_id_dsa.pub" est à l'intérieur du dossier Windows partagé

Configuration d'openssh

  • on édite le fichier en root : # vim  /etc/ssh/sshd_config
  • on décommente/modifie les lignes pour avoir les valeurs suivantes :
    • l.5 : Port 22 (modifier au besoin le port d'écoute SSH du serveur)
    • l.26 : PermitRootLogin no (on n'interdit à root de se connecter)
    • l.28 : AllowUsers USER1 USER2 (autoriser des utilisateurs)
    • l.29 : RSAuthentication no (nous utilisons une clé DSA)
    • l.31 : AuthorizedKeysFile %h/.ssh/authorized_keys (vérifier les clés publiques)
    • l.50 : PasswordAuthentification no (désactiver l'authentification par mot de passe et donc le bruteforce)
  • on recharge le fichier de configuration ssh : # /etc/init.d/ssh reload

Test client/serveur SSH (l'heure de vérité !)

  • on lance putty.exe et on charge notre profil en cliquant sur ssh debian puis Load et enfin Open
  • on entre le nom de l'utilisateur autorisé en amont sur le serveur : USER1
  • un message apparaît nous invitant à accepter la clé ssh : cliquons sur Oui
  • on tape ensuite la passphrase de notre clé privée (client)
  • le prompt apparait : mission accomplie

En cas d'erreur

  • Message "Error Network" dans Putty
    • la communication ne se fait pas entre votre host Windows et virtualBox, refaites scrupuleusement l'étape Configuration de VirtualBox (Windows)
  • Message "no supported authentication methods available" dans Putty
    • vérifiez les droits sur le dossier user .ssh (et non le root) (700 ou drwx------) et sur les clés publiques ~/.ssh/id_dsa.pub et ~/.ssh/id_rsa.pub (644 ou -rw-r—r--)
  • Vous avez supprimé les clés ssh_host_xxx par erreur
    • pas de panique ! Regénérez les clés avec dpkg-reconfigure openssh-server ou à la mano :
      • ssh-keygen -f "/etc/ssh/ssh_host_rsa_key" -N '' -t rsa
      • ssh-keygen -f "/etc/ssh/ssh_host_dsa_key" -N '' -t dsa
    • effacer le contenu du fichier $ ~/.ssh/known_hosts ou tapez vim +Nd +x /home/alice/.ssh/known_hosts (où N correspond au numéro de ligne affiché dans le message d'erreur suivant : Offending key in /home/admin/.ssh/known_hosts:24 (tentative de connexion ssh))
  • Si vous n'y arrivez toujours pas
    • utilisez les commentaires ci-dessous !

Poursuivre votre lecture sur le site