Mini-PC : Gnu/Linux : SSH : Tunnelliser par SSH l`accès à serveur

Transcription

Mini-PC : Gnu/Linux : SSH : Tunnelliser par SSH l`accès à serveur
Mini-PC : Gnu/Linux : SSH : Tunnelliser par SSH l'accès à serveur Ipython notebook
Par X. HINAULT – Decembre 2014 – www.mon-club-elec.fr
Ce qu'on va faire ici...
Il existe un outil très intéressant dans le monde des « interpréteurs Python » : Ipython, l'interpréteur surdoué. Notamment, cet interpréteur est capable de
fonctionner en mode « notebook » qui n'est ni plus ni moins qu'un serveur fournissant une console Python... avec visualisation des sorties graphiques. Qui plus est
cette console permet d'interagir complètement avec le système sur lequel elle s'exécute.
Ici, nous allons voir comment installer et utiliser le serveur Ipython notebook via un accès SSH pour contrôler et interagir à distance avec le mini-PC, notamment
grâce à Pyduino.
Dans quelles situations cette procédure est-elle utile ?
Les situations sont potentiellement variées : la procédure est utile à chaque fois que l'on voudra prendre le contrôle du mini-pc à distance.
On pourra même potentiellement utiliser le principe pour faire des tests « à la volée » d'affichages graphiques, etc..
Pré-requis
On présuppose ici que le serveur et le client SSH sont opérationnels et configurés correctement. Voir la procédure détaillée dans le document dédié séparé.
Mini-PC : Gnu/Linux : SSH : Tunnelliser une connexion Http par SSH - Par X. HINAULT – Octobre 2014 – www.mon-club-elec.fr – p. 1 / 8
Le réseau utilisé
Mini-PC : Gnu/Linux : SSH : Tunnelliser une connexion Http par SSH - Par X. HINAULT – Octobre 2014 – www.mon-club-elec.fr – p. 2 / 8
Pour comprendre
SSH est un mode de connexion réseau client-serveur qui permet de « tunneliser », c'est à dire de rendre invisible de l'extérieur, les échanges entre le serveur SSH et
le client SSH. Il s'agit donc d'un outil de sécurisation puissant.
Dans sa forme la plus simple, l'utilisation de SSH permet d'obtenir sur le poste client, au sein d'un terminal, la ligne de commande du poste distant (=le poste
serveur SSH distant). C'est une façon de contrôler, dépanner, prendre la main sur le poste serveur de façon distante et en toute sécurité.
Mais SSH, permet bien plus que cela : il est en effet possible de tunnelliser au sein de la communication SSH tout autre service de son choix, notamment l'accès au
bureau distant par VNC, serveur HTTP, etc... Ceci au prix d'une augmentation de la bande passante, mais avec un gain en sécurisation significatif.
Mini-PC : Gnu/Linux : SSH : Tunnelliser une connexion Http par SSH - Par X. HINAULT – Octobre 2014 – www.mon-club-elec.fr – p. 3 / 8
Installation
La procédure d'installation est un petit peu conséquente. L'installation de Ipython Notebook sur un système Gnu/Linux est la suivante (Lubuntu 12.04 LTS):
• commencer par installer les paquets suivants :
◦ sudo apt-get install python-dev
◦ sudo apt-get install ipython
◦ sudo apt-get install ipython-notebook
◦ sudo apt-get install ipython-qtconsole
◦ sudo apt-get install python-matplotlib
•
•
•
et quelques dépendances utiles :
◦ sudo apt-get install pandoc
◦ sudo apt-get install python-jinja2
une fois fait, pour disposer de la dernière version, je conseille fortement de mettre à jour avec « pip », l'installateur du dépôt de paquets Python Pypi
(https://pypi.python.org/pypi ). Commencer par installer pip :
◦ sudo apt-get install python-pip
puis faire la mise à niveau avec :
◦ sudo pip install ipython --upgrade
◦ sudo pip install tornado --upgrade
◦ sudo pip install pyzmq --upgrade (seulement si problème var c'est assez long)
◦
L'intérêt majeur de cette façon de faire est d'installer simplement les dépendances grâce à apt-get plutôt que de les installer 1 à 1 sinon.
Une fois fait, on est paré.
Mini-PC : Gnu/Linux : SSH : Tunnelliser une connexion Http par SSH - Par X. HINAULT – Octobre 2014 – www.mon-club-elec.fr – p. 4 / 8
Lancement du serveur ipython-notebook
A présent, on va lancer le serveur ipython-notebook, sur l'adresse:port suivant 127.0.0.1 :8888 par défaut :
ipython notebook --no-browser
On peut aussi préciser :
--notebook-dir='chemin/des/notebooks'
Pour plus de détails sur les options possibles :
ipython - help notebook
Configuration du port forwarding utilisé
Ce que l'on va faire ici...
Nous allons lancer la connexion du client SSH en configurant le « port forwarding » du port 2012 local vers le port 8080 distant
Pour plus de détails, voir la procédure dédiée.
Ligne de commande
Pour réaliser cela on utilisera une commande de la forme
ssh -L port_local:hostname:port_host user@server_ip
Dans notre cas, cela donne dans notre cas :
ssh -L 2012:localhost:8888 [email protected]
Noter que ici, localhost représente le localhost sur le serveur SSH : la connexion se fera sur localhost:8888 côté serveur.
Côté client, le port 2012 est sous entendu localhost:2012 côté client.
Mini-PC : Gnu/Linux : SSH : Tunnelliser une connexion Http par SSH - Par X. HINAULT – Octobre 2014 – www.mon-club-elec.fr – p. 5 / 8
Utilisation de la connexion HTTP tunnelisée par SSH
Ce que l'on va faire ici...
A présent, nous allons utiliser cette connexion tunellisée.
Pré-requis
On suppose ici que le serveur Ipython est en exécution sur 127.0.0.1:8888 côté serveur SSH : c'est le cas si vous l'avez bien lancé comme indiqué précédemment,
sinon, lancez-le.
Connexion
Côté client, ouvrir un navigateur et se connecter sur l'adresse localhost:2012 (ce qui revient à se connecter sur localhost:8888 côté serveur...) :
Mini-PC : Gnu/Linux : SSH : Tunnelliser une connexion Http par SSH - Par X. HINAULT – Octobre 2014 – www.mon-club-elec.fr – p. 6 / 8
Résultat obtenu
On obtient alors logiquement la page fournie par le serveur IPythonqui tourne sur le mini-PC, et donc ici le serveur Notebook !
A partir de là, çà devient vraiment intéressant, car on peut générer des notebook IPython à partir de ce serveur de développement. Faire des essais, des mises au
point, etc... ou tout simplement apprendre...
Mini-PC : Gnu/Linux : SSH : Tunnelliser une connexion Http par SSH - Par X. HINAULT – Octobre 2014 – www.mon-club-elec.fr – p. 7 / 8
Truc utile
Si on souhaite éviter l'ouverture d'une console SSH côté client, on pourra utiliser le paramètre ssh -nNT en plus du reste.
ssh -nNT -L port_local:hostname:port_host user@server_ip
Conclusion
Un outil incroyablement intéressant pour développer, mettre au point des procédures, etc... in situ. Une fois fait, les codes peuvent être intégré dans des
programmes opérationnels.
Ressources utiles
•
http://ipython.org/
Mini-PC : Gnu/Linux : SSH : Tunnelliser une connexion Http par SSH - Par X. HINAULT – Octobre 2014 – www.mon-club-elec.fr – p. 8 / 8