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