Les utilisateurs de OpenSSH, ont très souvent recours à SSH uniquement pour réaliser des connexions vers les serveurs, sans savoir qu'il peut être utilisé pour réaliser un VPN, en établissant un tunnel sécurisé ssh vers un serveur, puis en rebondissant vers les serveurs internes, du réseau.

Prenons un exemple simple de schéma réseau : vous êtes à l'extérieur de la société et souhaitez, atteindre 4 machines :

  • intranet sur le port http 80
  • web-metier sur le port http 80
  • pop3 sur le port pop3 110
  • pc1 sur le port RDP (Remote Desktop) et accès aux répertoires partagés
Astuce : Le grand avantage du script que je propose, est d'utiliser complètement les adresses ip loopback 127.0.0.0/8, et pas juste l'adresse 127.0.0.1. On peut ainsi, utiliser plusieurs fois le même port (ceux qui ont déjà creusé la question comprendront ce que je veux dire)

tunnel ssh

Avec Windows, en utilisant PuTTY vous créez le script suivant qui crée le tunnel SSH :

set path=%path%;"C:\Program Files\PuTTY"
echo 127.0.0.1 localhost > C:\WINDOWS\system32\drivers\etc\hosts
echo 127.0.0.2 intranet >> C:\WINDOWS\system32\drivers\etc\hosts
echo 127.0.0.3 web-metier >> C:\WINDOWS\system32\drivers\etc\hosts
echo 127.0.0.4 pop3 >> C:\WINDOWS\system32\drivers\etc\hosts
echo 127.0.0.5 pc1 >> C:\WINDOWS\system32\drivers\etc\hosts

copy C:\WINDOWS\system32\drivers\etc\lmhosts.sam C:\WINDOWS\system32\drivers\etc\lmhosts
echo 127.0.0.5 pc1 >> C:\WINDOWS\system32\drivers\etc\lmhosts

net stop Browser
net stop lanmanserver

rem pour écrire une ligne de commande sur plusieurs lignes mettre ^ en fin de chaque ligne
rem to write multi-lines DOS command use ^ 

plink -C ^
-L 127.0.0.2:80:intranet:80 ^
-L 127.0.0.3:80:web-metier:80 ^ 
-L 127.0.0.4:110:pop3:110 ^
-L 127.0.0.5:3390:pc1:3389 ^
-L 127.0.0.5:137:pc1:137 ^
-L 127.0.0.5:138:pc1:138 ^
-L 127.0.0.5:139:pc1:139 ^
%username%@[nom ou ip du serveur ssh]

net start lanmanserver
net stop Browser
echo 127.0.0.1 localhost > C:\WINDOWS\system32\drivers\etc\hosts
del C:\WINDOWS\system32\drivers\etc\lmhosts

Démarrez le script, identifiez-vous, laissez la fenêtre DOS "ouverte", et hop vous avez accès aux ressources désirées !

Astuce : vous remarquerez le signe ^ en fin de ligne, il permet d'écrire une commande DOS sur plusieurs lignes.

Avec Linux, de la même façon, vous pouvez créer un alias dans le .bashrc :

alias VPN=' \
sudo cp hostout.conf /etc/hosts; \
sudo ssh \ 
-L 80:intranet:110 \
-L 80:web-metier:80 \
-L 110:pop3:110 \
-L 3389:pc1:3389 \ 
-L 137:pc1:137 \
-L 138:pc1:138 \
-L 139:pc1:139 \
user@[nom ou ip du serveur ssh]; \
sudo cp hostin.conf /etc/hosts;'

hostout.conf et hostin.conf contiennent les noms de machines et les ip de mappage en 127.0.0.x.