Créez une console de gestion à distance à l'aide de Python et Jupyter Notebooks
Transformez Jupyter en console d'administration à distance.
Secure Shell (SSH) est un outil puissant pour l’administration à distance, mais il lui manque quelques subtilités. Écrire une console d'administration à distance à part entière semble représenter beaucoup de travail. Sûrement, quelqu’un dans la communauté open source a déjà écrit quelque chose ?
Ils l’ont fait, et son nom est Jupyter. Vous pensez peut-être que Jupyter est l'un de ces outils que les data scientists utilisent pour analyser les tendances des clics publicitaires sur une semaine ou quelque chose du genre. Ce n’est pas faux, c’est effectivement le cas, et c’est un excellent outil pour cela. Mais cela ne fait qu’effleurer la surface.
À propos de la redirection de port SSH
Parfois, il existe un serveur sur lequel vous pouvez vous connecter via SSH via le port 22. Il n'y a aucune raison de supposer que vous pouvez vous connecter à n'importe quel autre port. Peut-être que vous utilisez SSH via un autre serveur « jumpbox » qui a plus d'accès ou qu'il existe des pare-feu hôte ou réseau qui restreignent les ports. Il existe bien sûr de bonnes raisons de restreindre les plages d’accès IP. SSH est un protocole sécurisé pour la gestion à distance, mais permettre à quiconque de se connecter à n'importe quel port est tout à fait inutile.
Voici une alternative : exécutez une simple commande SSH avec redirection de port pour transférer un port local vers une connexion distante locale. Lorsque vous exécutez une commande de redirection de port SSH telle que -L 8111:127.0.0.1:8888
, vous dites à SSH de transférer votre port local 8111
à ce que l'hôte distant pense que 127.0.0.1:8888
est. L'hôte distant pense que 127.0.0.1
est lui-même.
Tout comme dans Sesame Street, « ici » est un mot subtil.
L'adresse 127.0.0.1
est la façon dont vous épelez « ici » au réseau.
Apprendre en faisant
Cela peut sembler déroutant, mais exécuter ceci est moins compliqué que de l'expliquer :
$ ssh -L 8111:127.0.0.1:8888 moshez@172.17.0.3
Linux 6ad096502e48 5.4.0-40-generic #44-Ubuntu SMP Tue Jun 23 00:01:04 UTC 2020 x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed Aug 5 22:03:25 2020 from 172.17.0.1
$ jupyter/bin/jupyter lab --ip=127.0.0.1
[I 22:04:29.771 LabApp] JupyterLab application directory is /home/moshez/jupyter/share/jupyter/lab
[I 22:04:29.773 LabApp] Serving notebooks from local directory: /home/moshez
[I 22:04:29.773 LabApp] Jupyter Notebook 6.1.1 is running at:
[I 22:04:29.773 LabApp] http://127.0.0.1:8888/?token=df91012a36dd26a10b4724d618b2e78cb99013b36bb6a0d1
<MORE STUFF SNIPPED>
Transférez le port 8111
vers 127.0.0.1
et démarrez Jupyter sur l'hôte distant qui écoute sur 127.0.0.1:8888
.
Maintenant, vous devez comprendre que Jupyter ment. Il pense que vous devez vous connecter au port 8888
, mais vous l'avez transféré au port 8111
. Ainsi, après avoir copié l'URL dans votre navigateur, mais avant de cliquer sur Entrée, modifiez le port de 8888
à 8111
:
(Moshe Zadka, CC BY-SA 4.0)
La voilà : votre console de gestion à distance. Comme vous pouvez le voir, il y a une icône « Terminal » en bas. Cliquez dessus pour obtenir un terminal :
(Moshe Zadka, CC BY-SA 4.0)
Vous pouvez exécuter une commande. La création d'un fichier l'affichera dans le navigateur de fichiers sur le côté. Vous pouvez cliquer sur ce fichier pour l'ouvrir dans un éditeur exécuté localement :
(Moshe Zadka, CC BY-SA 4.0)
Vous pouvez également télécharger, renommer ou supprimer des fichiers :
(Moshe Zadka, CC BY-SA 4.0)
En cliquant sur la petite Flèche vers le haut, vous pourrez télécharger des fichiers. Pourquoi ne pas télécharger la capture d'écran ci-dessus ?
(Moshe Zadka, CC BY-SA 4.0)
Pour terminer, Jupyter vous permet de visualiser les images distantes directement en double-cliquant dessus.
Oh, c'est vrai, et si vous souhaitez automatiser des systèmes à l'aide de Python, vous pouvez également utiliser Jupyter pour ouvrir un notebook.
Alors la prochaine fois que vous aurez besoin de gérer à distance un environnement avec pare-feu, pourquoi ne pas utiliser Jupyter ?