Guide simple des calculs à distance

Un nouveau blog

Lancer un serveur jupyter sur la machine distante

without comments

On veut lancer un serveur jupyter sur la machine distante et s’y connecter depuis la maison:

Ici on prend comme exemple de machine distante la machine:  servjupyter.enst.fr (cela pourrait être tp-5d02-04.enst.fr par exemple)

Je suppose que vous avez déjà dans votre path sur les ordi de la DSI un anaconda, par exemple

 

/cal/softs/anaconda/anaconda3/bin

Configurer le serveur jupyter:

(à faire une fois pour toute) il faut que le fichier de configuration de jupyter ait les deux options suivantes:

c.NotebookApp.allow_origin = ‘*’
c.NotebookApp.ip = ‘0.0.0.0’ #’localhost’

 

Le fichier est $HOME/.jupyter/jupyter_notebook_config.py sur la machine. Créez-le s’il le faut.

 

Créez-vous un environnement conda qui convient à votre travail. On appelle cet environnement environ_a_moi.

Lancer le serveur:

(à faire à chaque fois que vous voulez lancer un serveur jupyter)

– se connecter à la machine servjupyter.enst.fr .

– faire

conda activate environ_a_moi

– lancer le serveur par

jupyter notebook –no-browser

(attention il y a un double – devant no-browser)

notez la ligne:

http://( servjupyter.enst.fr or 127.0.0.1):8888/?token=78cb5b9349c04a72772ba8392cbd78120243a7cb866302c7

et gardez ce terminal ouvert. (TERMINAL 1)

ATTENTION: C’est un grave risque de sécurité de laisser traîner ce token=78cb5b9349c04a72772ba8392cbd78120243a7cb866302c7

en conjonction avec le nom de la machine sur laquelle jupyter tourne.

 si vous faites comme je dis il ne passera que dans  des tunnels ssh et sera donc protégé.

 

SUR LA MACHINE LOCALE:

1)  ssh -TNL 8888:servjupyter.enst.fr :8888 ssh.enst.fr

(cela crée un tunnel)

soyez patients car la machine ssh.enst.fr est très lente. tapez votre mot de passe si nécessaire.

 

2) Ouvrir un navigateur et entrez

http://localhost:8888/?token=78cb5b9349c04a72772ba8392cbd78120243a7cb866302c7

 

Et normalement vous êtes connectés et pouvez lancer autant de noyaux que vous voulez.

 

Quand vous aurez fini, n’oubliez pas de fermer le serveur qui tourne sur (TERMINAL 1) afin de libérer des ressources. Ainsi que fermer le tunnel.

 

Si la machine distante est à vous, vous pouvez laisser tourner le serveur mais n’oubliez pas de garder précieusement le token=78cb5b9349c04a72772ba8392cbd78120243a7cb866302c7 qui vous aura été donné.

 

 

 

 

Written by Saïd Ladjal

mars 23rd, 2020 at 3:18 am

Posted in Uncategorized

Spyder avec un noyau distant

without comments

J’aime spyder et je deteste toute forme de codage dans un navigateur web (trop lent, pâteux, inconfortable). Je décris donc comment lancer un spyder sur la machine locale tout faisant les calculs sur la machine distante.

Lancer le noyau

À faire sur a machine de calcul:

ipython kernel

(Si vous voulez un environnement spécial faites d’abord le bon conda activate ou autre)

Cela va afficher plein de choses et se terminer par

–existing kernel-22929.json

copier le fichier kernel-22929.json vers la machine locale

(suivant les installations il peut être sous

/var/run/user/numero/jupyter

ou dans .local

Pour trouver le mieux est de chercher

cd

find . -name kernel-22929.json

vous dira si le fichier est dans votre home.

Une fois que vous aurez trouvé, il sera toujours dans le même répertoire.

pour le copier, faire depuis la machine locale:

scp pc:./.local/share/jupyter/runtime/kernel-23027.json /tmp/kpc.json

(notez que pc: signifie la machine distante)

Le fichier est mainteant sur la machine locale à la position /tmp/kpc.json.

 

Se connecter au noyau:

Dans spyder cliquer sur la roue en haut à droite de la partie interactive (console python) -> connecter à un noyau existant

Une fenêtre s’ouvre

entrez /tmp/kpc.json pour « information de connexion »

et cochez la case « Noyau distant »

Pour « Nom d’hôte » entrez simplement « pc » (magie du .ssh/config)

-> OK

Vous voilà avec une console python dont les calculs sont sur la machine de calcul . Très utile pendant le prototypage. Par contre il ne faut pas oublier que l’éditeur de texte de spyder édite des scripts locaux.  Une fois un script prêt, il faudra le transférer vers la machine de calcul pour l’exécuter en ligne de commande par exemple.

 

L’informatique ne serait pas l’informatique si cette méthode vient de ne pas marcher chez moi, peut-être mon spyder est-il trop vieux… Bref la théorie est bonne. Suivant la version de spyder il faudra remplir différemment la fenêtre.

 

 

 

 

Written by Saïd Ladjal

mars 19th, 2020 at 11:19 pm

Posted in Uncategorized

Seconde étape: réglage du fichier .ssh/config

without comments

Grâce à bon réglage de votre fichier .ssh/config vous pourrez faire quelque chose comme:

ssh pc

et arriver directement sur votre pc du travail sans taper son ip complète ou son nom.

 

À télécom nous avons le problème supplémentaire qu’on ne peut pas faire ssh directement vers les machines. Certains utilisent VPN pour circonvenir à cet inconvénient, mais je préfère faire un tunnel ssh.

Je vais supposer que votre machine de calcul s’appelle

powerfulmachine.enst.fr

Script tunnel:

Il faut créer un script qui nommé par exemple tunneltelecom et qui continent la ligne suivante:

ssh -N -TL 1234:powerfulmachine.enst.fr:22 enst &

attention le numéro 1234 est arbitraire, mais il doit simplement être plus grand (strictement?) que 1024 et inférieur à 65535 (je crois, en tout cas vous avez du choix. Il faudra réserver ce numéro à une machine et ne pas le réatribuer à une autre machine.

N’exécutez pas encore ce script.

.ssh/config

ajouter ces lignes à votre fichier .ssh/config (à créer si besoin)


host enst
hostname ssh.enst.fr
user login_DSI (par exemple mon login est ladjal)

 

host pc
hostname localhost
port 1234
user login_sur_machine_clacul (par exemple said)


Cela signifie que en faisant

ssh pc

vous allez vous connecter à la machine locale sur le port 1234, mais ça tombe bien le script tunneltelecom a connecté ce port (1234) au port 22 de votre machine de calcul.

Executez le script tunneltelecom

puis:

ssh pc

Et voilà.

Ca ne marche pas? Peut-être avez-vous oublié de rendre la machine ssh.enst.fr contrôlable avec votre clé (voir « Première étape »)

 

Written by Saïd Ladjal

mars 19th, 2020 at 10:45 pm

Posted in Uncategorized

Première étape: la clé ssh

without comments

Création de la clé

 

La première étape pour accéder de manière fluide à une machine à distance est de disposer d’une clé ssh qui vous permettra d’exécuter des choses à distance sans besoin de taper votre mot de passe.

Une clé ssh est un couple à deux composantes: publique et privée.

La clé publique sert dans un ordinateur dont vous voulez prendre le contrôle. N’importe qui peut la voir, vous pouvez la publier sur une carte de visite si vous voulez.

 

La clé privée prouve votre identité. Si on vous la vole, on peut se faire passer pour vous. Elle doit être sur l’ordinateur maître, celui depuis lequel vous voulez contrôler la machine de calculs.

Si vous n’en avez pas, il faut en générer une avec:

ssh-keygen

(attention, si vous le laissez faire il va générer directement le couple dans $HOME/.ssh/id_rsa ce qui pourrait écraser une clé que vous utilisez déjà.)

 

Je vous suggère de laisser la passphrase vide.

Ce programme crée deux fichiers

id_rsa (clé privée)

id_rsa.pub (clé publique)

copier id_rsa vers $HOME/.ssh/identity

(vérifier que vous n’avez pas de tel fichier au préalable. Si vous avez un tel fichier, ce paragraphe est inutile, passez à utilisation de la clé)

copier id_rsa.pub vers $HOME/.ssh/id_rsa.pub (pour être sûr de la retrouver)

Utilisation de la clé

Sur la machine de calcul copier id_rsa.pub dans

$HOME/.ssh/authorized_keys

(si le fichier existe déjà vous pouvez faire

cat authorized_keys id_rsa.pub >newauthorized

mv newauthorized authorized_keys

c’est à dire juste ajouter la clé publique à celles déjà capables de prendre le contrôle de la machine de calcul.)

Maintenant, la machine locale (celle qui possède id_rsa) pourra prendre le contrôle de la machine de calcul

Faites de même pour rendre la machine ssh.enst.fr contrôlable par la machine locale.

————-ENGLISH (use at your own risks)

Creating the key

The first step to smoothly access a remote machine is to have an ssh key that will allow you to run things remotely without having to type your password.

An ssh key is a combination of two components: public and private.

The public key is used in a computer you want to take control of. Anyone can see it, you can publish it on a business card if you want.

The private key proves your identity. If someone steals it, they can pretend to be you. It must be on the master computer, the one you want to control the computing machine from.

If you don’t have one, you have to generate one with it:

ssh-keygen

(be careful, if you let it do this it will generate the couple directly in $HOME/.ssh/id_rsa which could overwrite a key you are already using).

I suggest you leave the passphrase empty.

This program creates two files

id_rsa (private key)

id_rsa.pub (public key)

copy id_rsa to $HOME/.ssh/identity

(check that you don’t have such a file beforehand. If you have such a file, this paragraph is useless, go to using the key)

copy id_rsa.pub to $HOME/.ssh/id_rsa.pub (to be sure to find it)

Using the key

On the calculation machine copy id_rsa.pub into

$HOME/.ssh/authorized_keys

(if the file already exists you can do

cat authorized_keys id_rsa.pub >newauthorized

mv newauthorized authorized_keys

i.e. just add the public key to those already able to take control of the computing machine).

Now, the local machine (the one that has id_rsa) will be able to take control of the computing machine.

Do the same to make the ssh.enst.fr machine controllable by the local machine.

Written by Saïd Ladjal

mars 19th, 2020 at 10:27 pm

Posted in Uncategorized

Introduction

without comments

Ce petit site a pour but de vous aider dans la période actuelle à utiliser une machine à distance.

 

Il s’adresse surtout aux personnes qui codent chez elles tout en voulant accéder à la puissance de leur machine de bureau (par exemple avec une carte graphique)

—ENGLISH (use at your own risks)

This small site aims to help you in the current period to use a remote machine.

It is mainly aimed at people who code at home while wanting to access the power of their office machine (for example with a graphic card).

Written by Saïd Ladjal

mars 19th, 2020 at 10:07 pm

Posted in Uncategorized