- Ouvrir des tunnels sous Windows avec PuTTY
- Comment mettre en place des tunnels sous Unix/MacOS X
- Configuration des applications de messagerie et de navigation Web
- Le transfert de fichiers via SFTP
- Explication du fonctionnement des tunnels SSH à l'Observatoire
- Logiciels
- Appendix : la notion de port
- Appendix : Faire un ssh dans un tunnel ssh
Le tunnel SSH vous permet d'accéder à des ressources intérieur de l'Observatoire depuis le réseau extérieur.
Ouvrir des tunnels sous Windows avec PuTTY
Dans ce paragraphe, nous allons voir comment faire les mêmes
opérations sous Windows avec l'application PuTTY
. Lancez
l'application en cliquant sur l'icône de celui-ci ; vous aurez la
première fenêtre qui s'ouvre :
dans le champ Host name
il faut entrer le nom du serveur par
lequel vous allez faire le tunnel. Dans le cas qui nous intéresse,
il s'agit de styx.obspm.fr comme indiqué sur l'image. Vous pouvez
si vous le désirez sauvegarder cette configuration, mais il est
préfèrable de faire d'abord les tunnels.
Descendez un peu l'«ascenseur» (point 3), pour afficher le menu
Tunnel
. Vous obtenez alors
Vous pouvez maintenant construire les tunnels de la façon suivante ::
sélectionner le menu pour les tunnels ;
mettre le numéro de port (ici 3128) ;
choisir la destination avec en fin de nom le numéro de port du service, par exemple ici on met
proxy.obspm.fr:3128
, le:3128
indique vers quel port est redirigé la connexion (pensez au bout du tunnel) ;cliquer sur le bouton
Add
.
vous obtiendrez :
Si vous en avez besoin, c'est-à-dire si vous voulez faire un tunnel pour faire du mail, vous pouvez rajouter un tunnel pour les protocoles smtp et imap
Si vous voulez faire des transferts de fichiers avec une machine interne du réseau de l'Observatoire, par exemple tycho.obspm.fr, la solution la plus simple est de monter un tunnel ssh vers cette machine. Pour cela vous faites comme précédemment, mais avec :
Naturellement si vous voulez faire du transfert de fichiers vers une autre machine, il vous faut changer le nom du host (voir ensuite le paragraphe ci-dessous pour l'utilisation d'un outil de transfert de fichiers)
. Une fois ces opérations effectuées, avec autant de tunnels que vous voulez, il faut sauvegarder la configuration pour que la prochaine fois vous n'ayez pas à refaire la configuration, pour cela
Remontez en haut du menu pour revenir sur
session
;Dans la case
Save session
tapez un nom mnémotechnique ;Cliquez sur le bouton
save
.
Vous avez ainsi sauvegardé la configuration que vous avez effectuée. La prochaine fois, lorsque vous voudrez vous connecter, il vous suffira de cliquer deux fois sur le nom
pour que la connexion ainsi que les tunnels se fassent.
Comme pour la mise en oeuvre dans le monde Unix, mais cela dépend de comment est installé et est utilisé votre version de Windows, il arrive que Windows refuse d'ouvrir des ports inférieurs à 1024. Dans ce cas, prenez des ports supérieurs à 1024. Une astuce est de rajouter 1000 au numéro de port habituel du service.
Comment mettre en place des tunnels sous Unix/MacOS X
Sur toutes les versions de Linux/Unix/Macos X, vous avez le client
ssh
installé avec le système. Nous allons détailler dans ce
paragraphe une méthode pour faire des tunnels ssh
.
Lancez tout d'abord un terminal (pour les Mac, l'application Terminal se trouve dans le dossier Applications/Utilitaires et l'icône ressemble à un petit écran avec des caractères). Une fois cette opération effectuée, l'établissement d'un tunnel (commençons par le proxy Web) se fait en tapant la ligne
ssh -N -f -L3128:proxy.obspm.fr:3128 nom_login@styx.obspm.fr
ce qui signifie en langage courant : établir un tunnel (la flèche verte dans le schéma) depuis mon poste vers la machine styx.obspm.fr en ouvrant le port 3128 sur mon poste et de telle sorte que tout ce qui entre dans ce port soit redirigé via la machine styx.obspm.fr vers le port 3128 de la machine proxy.obspm.fr.
Faisons maintenant la même chose pour le mail
ssh -N -f -L1025:smtp-p.obspm.fr:25 nom_login@styx.obspm.fr
Une fois ces opérations effectuées vous aurez établi vos deux tunnels.
Comme vous l'avez noté, nous ne prenons pas le même port local pour
le smtp
contrairement à ce que nous avions fait pour le proxy. La
raison est que les ports dont le numéro est inférieur à 1024 sont
des ports réservés au système. Seul un compte utilisateur avec les
droits d'administrateur sur le poste de travail a le droit d'ouvrir
un service sur ces ports. Il est donc beaucoup plus simple de faire
les tunnels sur des ports supérieurs à 1024. Un moyen simple est
par exemple de rajouter 1000 au numéro de port (25 devient 1025) ou
dans le cas de deux chiffres pour le port initial, de doubler ces
deux chiffres (22 devient 2222). Mais le choix de ce numéro de port
local est à votre convenance.
Il est possible de faire les deux (ou plus si vous voulez) tunnels en une seule commande, pour cela il suffit de faire
ssh -N -f -L1025:smtp-p.obspm.fr:25 -L3128:proxy.obspm.fr:3128
nom_login@styx.obspm.fr
pour créer deux tunnels.
Vous pouvez aussi configurer votre ssh
en rajoutant (ou en
créant) dans le fichier $HOME/.ssh/config
quelque chose comme
Host styx
HostName styx.obspm.fr
LocalForward 3128 proxy.obspm.fr:3128
LocalForward 1025 smtp-p.obspm.fr:25
de cette manière, vous avez juste besoin de faire ssh styx
Configuration des applications de messagerie et de navigation Web
Le principe général est que l'application que l'on va utiliser sur son poste client va devoir être configurée pour se connecter sur le serveur 127.0.0.1
Son poste de travail, c'est-à-dire son propre serveur 127.0.0.1 est appelé aussi localhost, mais il est plus fiable (surtout sous Windows) d'utiliser partout la dénomination 127.0.0.1 Ainsi, pour accéder à votre messagerie, il suffit de lancer votre application usuelle (Thunderbird, Mail, etc) et de lui dire que :
- le "SMTP server" est la machine 127.0.0.1 (au lieu de smtp-p.obspm.fr) avec comme numéro de port le 1025 (ou un autre numéro si vous avez fait un choix différent pour les numéros).
Vous pouvez aussi configurer le proxy Web.
Si dans la constitution du tunnel, vous avez choisi (par exemple)
d'utiliser le port 1025 pour le smtp
, il ne faut pas oublier de
l'indiquer à votre agent de mail. De même que pour les autres
services, il faut donner le numéro de port que vous avez choisi
pour l'entrée du tunnel.
Les outils modernes de messagerie comme Thunderbird permettent tous d'utiliser également les versions sécurisées des protocoles POP, IMAP et SMTP, avec la couche de chiffrement SSL. Aussi il est sans doute plus commode de nos jours d'utiliser, au lieu des tunnels SSH, les versions POPS ou IMAPS ainsi que le SMTP sécurisé (SMTP sur TLS), comme expliqué sur cette page.
Le transfert de fichiers via SFTP
Dans une utilisation normale, c'est-à-dire lorsqu'on ne transfère
pas des centaines de gigaoctets, le plus simple est d'utiliser
sftp
qui se comporte comme FTP, mais qui fonctionne au-dessus de
ssh
Windows
Il faut tout d'abord configurer (voir paragraphe ci-dessus) votre PuTTY avec le montage d'un tunnel vers la machine sur laquelle vous voulez faire des transferts de fichiers. On prendra comme exemple tycho.obspm.fr, donc vous devez faire quelque chose comme
Lancer maintenant votre connexion ssh
via PuTTY. Il est
primordial pour la suite de ne pas fermer cette connexion durant
toute la procédure de transfert de fichiers.
Téléchargez l'application Filezilla et installez-le. Lancer l'application :
et entrer les informations
Hôte :
sftp://127.0.0.1
: il est important de bien respecter la syntaxeVotre login
Votre mot de passe
Le numéro du port : 2222, si vous avez fait les mêmes choix que ci-dessus
Une fois les informations entrées, appuyer sur la touche Enter
de
votre clavier, vous allez avoir encore un message d'alerte sur les
clefs
Indiquez que vous faites confiances en cliquant le bouton ad hoc, puis sur le bouton OK.
Vous êtes maintenant connecté sur le serveur distant
Il vous suffit maintenant de faire les transferts de fichiers en mode «glisser/déposer».
Unix/Linux
La commande est intégrée dans les systèmes, et elle s'appelle
sftp
. Si vous voulez atteindre une machine interne à
l'Observatoire, par exemple tycho.obspm.fr nous vous recommandons
de faire une configuration chez vous sur votre poste personnel de
la manière suivante
Éditer le fichier ~/.ssh/config
pour mettre
ForwardX11 yes
ForwardX11Trusted yes
ForwardAgent yes
Host styx
HostName styx.obspm.fr
User VOTRE_LOGIN
LocalForward 2222 tycho.obspm.fr:22
Host tycho
HostName 127.0.0.1
Port 2222
User VOTRE_LOGIN
la ligne User VOTRE_LOGIN
n'est utile que si votre login local
est différent de votre login sur les machines de la DIO
Une fois cela fait, lancer dans un premier terminal une connexion
sur styx.obspm.fr par la commande ssh styx
et ensuite dans un
autre terminal vous pourrez faire ssh tycho
ou sftp tycho
Il faut faire attention que dans la configuration ci-dessus il est primordial de ne pas utiliser styx.obspm.fr dans la commande ssh, mais bien styx
Accès par RDP à un serveur Windows
Pour les personnes qui ont besoin d'un accès sur les serveurs
Windows depuis chez eux, typiquement pour l'accès à hardy & laurel
ou l'utilisation de SIFAC, il est possible d'utiliser depuis toutes
les plateformes (Linux/FreeBSD,
MacOS X,
Windows (outil Connexion de bureau à distance
)) un client RDP.
Nous renvoyons aux différentes documentations liées à chaque
système pour l'installation du client RDP.
Il faut ensuite installer un tunnel comme décrit ci-dessus avec le numéro de port local 13389 et la cible tserver-p.obspm.fr:3389. Typiquement sous Linux, la commande est
ssh -N -f -L13389:tserver-p.obspm.fr:3389 nom_login@styx.obspm.fr
Il ne vous reste plus qu'à lancer votre application RDP sur le
serveur 127.0.0.1
sur le port 13389
pour accéder à
tserver2.obspm.fr
depuis votre poste à travers le tunnel.
Explication du fonctionnement des tunnels SSH à l'Observatoire
Il est aujourd'hui impossible d'ouvrir certains services directement sur Internet. Les attaques sont trop courantes. Nous utilisons donc des procédés de filtrage interdisant l'accès à nos serveurs depuis l'extérieur. Cependant, cela peut empêcher les utilisateurs d'utiliser ces mêmes services. Pour contourner ce problème, sans pour autant compromettre la sécurité de l'infrastructure, nous allons utiliser le principe de tunnel ssh. La mise en oeuvre d'un tunnel est un peu plus complexe que l'utilisation standard d'une application. C'est un peu le prix à payer pour avoir la sécurité et l'accès aux services.
Le principe de base est le suivant :
Vous êtes sur votre poste client et vous voulez accéder par exemple
aux serveurs proposant les services smtp
, proxy
. (Rappelons que
le service proxy
est le nom technique du
proxy Web. Comme expliqué sur le schéma, vous ne
pouvez pas vous connecter directement sur ces services depuis
Internet pour cause de filtrage au niveau de l'entrée de notre
réseau (symbolisé ici par la barrière rouge). Vous allez donc
constituer un tunnel (grosse flèche verte) entre votre poste client
et le serveur styx.obspm.fr. Lors de l'établissement de ce tunnel,
vous allez indiquer les services que vous voulez faire passer à
travers le tunnel (ici nous avons donc smtp
et proxy
). Pour
cela, il faut donc avoir les informations suivantes:
Le port de départ, c'est-à-dire le port qui va être ouvert sur votre poste client. Schématiquement il faut voir cela comme l'entrée du tunnel.
La machine qui va faire le travail de tunnel (ici cela sera styx.obspm.fr).
La machine que vous voulez atteindre (le bout du tunnel si vous voulez).
Le numéro de port de destination qui dépend donc du type de service que vous voulez atteindre.
Une fois cette opération effectuée, vous allez indiquer à vos
applications exécutées sur votre poste client de passer à travers
le tunnel ssh
pour atteindre les différents services.
Ce procédé de tunnel (on parle aussi de relais de ports, ou de
ports forwarding) vous permet de continuer à utiliser depuis
l'extérieur de notre réseau vos applications usuelles de messagerie
(comme Thunderbird, etc.), de navigation
Web (comme Firefox), au travers d'une
connexion sécurisée par ssh
.
Ce système de tunnel peut fort légitimement être perçu comme complexe à comprendre, mettre en oeuvre et utiliser la première fois. Mais l'investissement en vaut la peine, car cela vous permettra d'utiliser à distance de nombreux services uniquement disponibles depuis l'Observatoire, et cela de manière transparente, une fois les réglages faits une bonne fois pour toutes. Le tout d'une manière parfaitement sécurisée. Dans les exemples indiqués ci-dessous, on suppose que vous voulez vous connecter sur les serveurs de la DIO de Meudon. Si vous voulez vous connecter sur des serveurs à Paris (par ex. pour SIFAC), il est plus judicieux de remplacer styx.obspm.fr par rubicon.obspm.fr. Mais ces deux machines sont strictement équivalentes, et vous ne devriez pas sentir de différence notable de vitesse, quelque soit la machine utilisée pour faire les tunnels et les serveurs utilisés au bout des tunnels.
Logiciels
Pour mettre en place un tunnel ssh, il vous faut une application ad hoc à installer sur votre poste. Nous allons dans cette section présenter les quelques clients connus, il y en a d'autres, mais nous ne pouvons vous les présenter tous.
Unix/Linux
Sur tous les Unix modernes (GNU/Linux, FreeBSD, Solaris, etc.)
l'application ssh
est installée par défaut. Il s'agit de la version
opensource de l'implémentation de ssh
connu sous le nom de
OpenSSH. Vous n'avez donc rien de
particulier à faire. Si exceptionnellement vous avez un Unix sur
lequel n'est pas installé le client ssh
, il faut dans ce cas
installer la version que vous trouverez sur
OpenSSH.
MacOS X
Comme vous le savez certainement, MacOS X est basé sur un système
Unix (essentiellement du NetBSD,
OpenBSD et
FreeBSD), donc naturellement le système
vient avec un client ssh
installé par défaut. Cependant, ce
client est à utiliser en mode console (voir explication plus loin).
De fait pas conforme à la philosophie du Macintosh. Il s'est donc
développé de nombreux autres outils qui vous permettent de faire
cela de façon graphique. En voici quelques-uns
1 - Un client graphique pour faire mettre en place des tunnels Ssh Tunnels Manager
2 - Un autre client (non testé par nous) pour gérer des tunnels AlmostVPN
Dans la suite de ce document, nous ne présenterons pas plus en détail les clients graphiques pour MacOS X, les sites des développeurs étant bien documentés.
Windows
Sous Windows (toutes versions) il n'y a pas de client ssh
installé par défaut. Il vous faut donc impérativement installer un
client pour pouvoir mettre en place des tunnels. Voici une liste de
clients à votre disposition
1 - «Le» client classiquement utilisé : PuTTY (Il faut télécharger cette version)
2 - Un autre client (non testé par nous) : ssh-tunnel-client
3 - Un shareware : Zoc
Appendix : la notion de port
La notion de port
est très importante en informatique, nous
n'allons pas vous faire un cours de ce qu'est exactement un port
,
mais vous donner quelques notions imagées.
- Prenons un serveur qui va proposer plusieurs services (envoi de
- courrier, relève de courrier, etc.). Le client n'a aucun moyen de
- dire si ce qu'il veut c'est envoyer du courrier ou relever du
- courrier. Pour pouvoir faire cette distinction, il a été inventé la
- notion de
port
. On peut voir cela schématiquement comme une porte - la porte A va être réservée pour l'envoi de courrier et la porte B pour la relève de courrier.
Naturellement dans le monde informatique, c'est par des numéros
qu'on désigne les ports
. Il y a des standards (toujours inférieur
à 1024) communément utilisés:
22: Connexion
ssh
25: Envoi de courrier
80: Serveur WEB
110: Relève de courrier par POP
143: Relève de courrier par IMAP
etc.
Ces affectations sont juste des conventions. Vos applications (Thunderbird, Mail, etc) les appliquent. C'est pourquoi dans une configuration standard, vous n'avez pas à connaître le numéro du port pour un service. Si vous dites à Thunderbird que vous voulez relever votre courrier par IMAP, il va le faire par défaut sur le port 143. Lorsque vous faites des tunnels, vous ouvrez des ports sur votre machine, différents des ports par défaut. Votre application n'a aucun moyen de savoir qu'il s'agit de 1143 (ou d'un autre). C'est pourquoi dans la configuration il faut lui indiquer le numéro du port.
Appendix : Faire un ssh dans un tunnel ssh
Il est parfaitement possible de faire ssh dans un tunnel ssh et cela est loin d'être inutile. En particulier cela vous simplifie la vie lorsque vous voulez atteindre une machine interne du réseau depuis chez vous. Pour tout savoir dessus, lisez SSH dans un tunnel SSH.