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 :
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.