Introduction
Dans mon entreprise, nous utilisons depuis peu WhatsUp Gold pour la supervision de notre infrastructure, or cet outil a la particularité de générer des liens sous la forme ssh://host.example.com pour se connecter à un équipement depuis la map.
Liens SSH
1. Utilisation
De base Windows ne connait pas les liens SSH://IP.
L’un des outils le plus utilisé pour effectuer des connexions SSH est : PuTTY. On pourrait donc croire qu’en installant PuTTY, le format d’url SSH serait reconnu automatiquement par Windows.
Que nenni !!
2. Pourquoi ?
Car PuTTY ne reconnait pas le formalisme utilisé pour ce genre de liens SSH, PuTTY a fait le choix d’ignorer purement et simplement les liens SSH://IP. D’un autre côté, il ne semble pas y avoir de validation officielle pour ce format d’adresse.
a. Documentations
En effet, on ne trouve que des brouillons de RFC et donc l’URI (Uniform Resource Identifier) pour SSH (Scheme for Secure Shell) n’est pas validée.
b. Démo
Donc si je passe la commande suivante :
.\putty.exe ssh:\\127.0.0.1
J’obtiens un joli message d’erreur…
3. Solutions ?
a. Quelques pistes
Pour résoudre ce problème, il y a quelques solutions :
- Utiliser un autre outil
- Utiliser une version modifiée de PuTTY
- Utiliser un lanceur pour PuTTY
C’est cette dernière piste que j’ai choisi d’utiliser, un lanceur !! Celui-ci pouvait être dans n’importe quel langage… y compris powershell, mais pour des raisons de rapidité au lancement, j’ai préféré un bon vieux batch DOS.
b. Le batch DOS
Mais alors pourquoi un article DOS
sur un blog Powershell ??? Car le lanceur ne fait pas tout, il y a aussi une configuration de Windows à faire et aussi créer le lanceur en fonction du chemin de PuTTY sur votre poste. Donc, j’ai créé un petit outil pour effectuer la mise en place de tout cela et devinez quoi. Cet outil, est en PowerShell !! CQFD
4. Le GUI Powershell
a. L’interface
Petit tour du propriaitaire :
Sur ce screenshot on constate que j’ai déjà une association pour les url SSH : WinSCP.exe
En fait, avec WinScp, les liens fonctionnent car WinScp fait office de lanceur pour PuTTY …
A l’aide du bouton naviguez jusqu’à l’emplacement de votre putty.exe.
Il reste à cliquer sur Start
/!\ Attention : l’outil doit être lancé en admin, il va modifier la base de registre et déposer le lanceur à l’endroit de votre putty.exe
Une fois revenu sur Ready.
dans la barre de status, on constate que l’association SSH actuelle à changer. Désormais pour les liens SSH://IP c’est mon lanceur puttyssh.cmd
qui sera utilisé, et il se chargera de lancer PuTTY avec toutes les bonnes informations.
b. Les erreurs
Pas de chemin indiqué pour putty.exe
Le chemin indiqué pour putty.exe n’existe pas…
Problème de mise en place de la config, relancez en admin
c. La compatibilité
Les liens suivants sont gérés :
- ssh://[email protected]
- ssh://[email protected]:2222
- ssh://user:[email protected]
- ssh://user:[email protected]:2222
- ssh://[email protected]/
- ssh://[email protected]:2222/
- ssh://user:[email protected]/
- ssh://user:[email protected]:2222/
5. Le test FINAL
Depuis, par exemple, internet Explorer, je rentre dans la barre d’URL : SSH://127.0.0.1 +RETURN
And voila !
J’espère que l’article vous a plu et que l’outil pourra vous être utile. N’hésitez pas à me laisser des commentaires ainsi que des suggestions. Tout est toujours perfectible…
6. Téléchargement
sur mon GitHub : AssociateSSH
Annexe
1. Le code DOS
Pour ceux que cela intéresse, voici le contenu du fichier puttyssh.cmd sur mon poste.
Sur votre poste, il sera différent en fonction du chemin de putty.exe
@setlocal
@echo off
set var=%1
echo.%var%|findstr /C:"@" >nul 2>&1
if not errorlevel 1 (
echo Found
for /f "tokens=1,2,3,4 delims=@/\" %%a in ("%var%") do (
set loginFull=%%b
set hostFull=%%c
)
) else (
echo Not found.
for /f "tokens=1,2,3,4 delims=@/\" %%a in ("%var%") do (
set "loginFull="
set hostFull=%%b
)
)
for /f "tokens=1,2 delims=:" %%a in ("%loginFull%") do set Login=%%a&set pass=%%b
for /f "tokens=1,2 delims=:" %%a in ("%hostFull%") do set ip=%%a&set port=%%b
IF NOT DEFINED port (set port=22)
IF NOT DEFINED login (set login=)
IF NOT DEFINED pass (set pass=)
if DEFINED pass (
set param=-ssh %ip% -P %port% -pw "%pass%" -l "%login%"
) else (
set param=-ssh %ip% -P %port% -l "%login%"
)
start /D "C:\Program Files (x86)\PuTTY" putty.exe %param%
)