Dans le cadre de mon activité professionnelle, je suis amené à me connecter sur différentes machines de type Unix et GNU/Linux, l’authentification sur ces machines se faisant avec les clefs SSH.
Comme mon poste de travail fonctionne (marchotte) avec Windows XP, j’utilise Putty pour ouvrir les sessions SSH.

Pour certaines machines, j’ai mémorisé la configuration d’accès dans Putty et j’utilise un raccourci depuis le menu Démarrer pour y accéder. Pour d’autres qui sont nombreuses, je gère la liste des stations (hostname, adresse IP, …) dans un classeur. Pour ouvrir une session sur l’une de ces machines, je dois : ouvrir le classeur, copier l’adresse IP, ouvrir Putty et coller l’adresse afin d’ouvrir une session sur cette station.

Pour me faciliter la vie, j’ai rassemblé ces opérations dans une macro pour Excel 2000 qui est la version de mon poste XP.

Putty et ses données

Le logiciel Putty est disponible en téléchargement depuis cette page, il existe aussi une version portable sur le site de Framakey.

Si vous installez Putty sur votre poste XP, les données de configuration des sessions sont enregistrées dans la base de registre. Pour sauvegarder ces informations, il faut exporter la branche HKEY_CURRENT_USER\Software\Simon Tatham depuis l’éditeur de registre (regedit).

Il est conseillé de faire une sauvegarde régulière de cette partie de la base de registre et d’en faire un backup sur une autre machine, cela évitera de tout refaire en cas de crash du poste !

Créer un raccourcis vers une session Putty

Pour créer un raccourci vers un profil qui a été enregistré dans la base de registre, on utilise la syntaxe

    "C:\Program Files\Putty\putty.exe" -load "<nom de la session enregistrée>"

Ouvrir une session en mode commande

Depuis une invite de commande (MS-DOS), il est possible d’ouvrir une session sur une machine distante avec la syntaxe suivante :

    "C:\Program Files\Putty\putty.exe <adresse IP de la station>

Si on veut ouvrir une session sous un compte particulier, il faut utiliser la syntaxe :

    "C:\Program Files\Putty\putty.exe <login>@<adresse IP de la station>

On peut utiliser la même syntaxe pour les transferts sécurisés avec l’outil sftp, les commandes deviennent alors psft <adresse IP de la station> ou psft <login>@<adresse IP de la station>.

Ouvrir une session SSH depuis Excel

Comme l’entreprise ou je travaille est dépensière, en plus d’utiliser Windows XP, elle utilise également la suite Office. Comme un malheur n’arrive jamais seul, elle utilise 3 versions différentes (2000, 2003 et 2007) suivant l’age du poste ou le pays d’appartenance. Il y a donc des problèmes de compatibilité des formats des documents suivant leurs origines.
Ayant un poste ancien, je dispose de la version Office 2000.

Pour gérer mes stations, j’ai créé une feuille de calcul qui contient plusieurs types d’informations, il y a en a 2 qui sont importantes :

  • le nom de la machine qui est dans une colone nommée hostname
  • l’adresse IP de la machine qui est dans une colonne nommée AddIp

Le principe retenu est de sélectionner un nom de machine ou une adresse IP et de lancer la macro, celle ci vérifiera que :

  • si la cellule sélectionnée est un hostname, alors on sélectionne l’adresse IP correspondante
  • la cellule sélectionnée est bien dans la colonne AddIp, sinon il faut sortir de l’application
  • la cellule n’est pas vide, sinon il faut sortir de l’application

Si tous les contrôles sont Ok, alors on lance l’application Putty avec en paramètre l’adresse IP de la station.

La macro que vous pouvez ré-utiliser :

    Sub Ouvre_SSH()
    'Ouvre une session Putty/SSH sur l'adresse IP sélectionnée
    Dim Commande As String
    'Chemin d'accès à Putty, il doit être installé !
    Commande = "C:\Progra~1\Putty\putty.exe  "

    ' La sélection fait elle partie de la colonne des hostnames ?
    If ActiveCell.Column = Range("hostname").Column Then
     'On sélectione la colonne des adresses IP
     Cells(ActiveCell.Row, Range("AddIp").Column).Activate
    End If
     
    ' La sélection fait elle partie de la colonne des adresses IP ?
    If ActiveCell.Column <> Range("AddIp").Column Then
     MsgBox "La cellule sélectionnée n'est pas une adresse IP ou un hostname.", 16
     Exit Sub
    End If
    ' Il ne faut pas sélectionner le titre de colonne
    If ActiveCell.Row = 1 Then
     MsgBox "Vous avez sélectionné le titre de colonne," & Chr(13) & "vous devez choisir l'adresse IP ou le Hostname.", 16
     Exit Sub
    End If
    ' La cellule ne doit pas être vide
    If ActiveCell.Value = "" Then
     MsgBox "L'adresse IP n'existe pas.", 16
     Exit Sub
    End If

    Commande = Commande & ActiveCell.Value
    Shell Commande, vbNormalFocus
    End Sub