Jupyter over SSH
Imaginemos a situação: meu PC tem um sistema operacional Ubuntu, no qual uso o arquivos do Jupyter Notebook (*.ipynb) sem qualquer problema de compatibilidade, correto?! A resposta que dou atualmente seria: quase!
Explico: migrei para o Ubuntu após passar nervoso com o Windows e suas diversas complicações e ajustes necessários para fazer coisas simples usando o python. No Ubuntu superei muitos entraves que tive no início do aprendizado dessa linguagem de programação. Contudo, ainda assim, existem algumas bibliotecas do python que só funcionam do Windows, por fazerem a integração com softwares restritos ao Sistema Operacional do Bill Gates.
Cito dois deles: ArcGIS e MetaTrader. O primeiro deles é um software nativo para Windows, para trabalhar com geoprocessamento, e que tem uma biblioteca ArcPy. Em segundo lugar, a plataforma MetaTrader, que faz a negociação de ativos na bosla de valores e também conta com uma biblioteca de integração para python. Ambos só funcionam no Windows (ainda que existam gambiarras para sua instalação no Linux).
Portanto, busquei alternativas para conseguir, a partir do meu Ubuntu, rodar essas bibliotecas.
Protocolo SSH
SSH no Linux
SSH no Windows
- Instalar o OpenSSH na Máquina Virtual https://www.youtube.com/watch?v=KLN2bY0dTtQ
Alternativa 1: Virtual Machine
-
Usando o Virtual Box, criar uma máquina virtual do Windows.
-
Nessa máquina virtual, instalar o conda, sendo recomendado inserir os paths da instalação nas variáveis de ambiente… ou inserir manualmente.
C:\ProgramData\Miniconda3\Library\bin\conda.bat C:\ProgramData\Miniconda3\Scripts\conda.exe C:\ProgramData\Miniconda3\condabin\conda.bat
-
Criar ambiente do conda
-
Na Máquina Virtual, fazer o redirecionamento de porta
- No Host (Ubuntu), dar o comando:
ssh -vv [email protected] -p 2222
Estando no Ubuntu, logado no Windows via SSH, já com o conda instalado também no Windows, acesso meu ambiente:
conda activate trade
jupyter lab --no-browser --port=8888 --notebook-dir=Y:\SourceCode --ip=0.0.0.0
Será criado um link.
Basta trocar a porta 8888 por 8889
PS: Abri o Firewall
Alternativa 2: Acessando Windows na Rede Local
Tenho dois PCs, sendo um com meu Ubuntu e outro com Windows 10. Ambos ficam ligados constantemente.
Primeiro passo é se conectar, via ssh, com o Windows.
ssh -vv michel@asus-i5
Estando no Ubuntu, logado no Windows via SSH, já com o conda instalado também no Windows, acesso meu ambiente:
conda activate trade
Peço para o Jupter Notebook iniciar na porta 8889, em um diretório específico, porém sem o browser!
jupyter lab --no-browser --port=8888 --notebook-dir=Z:\
Após isso, em um outro terminal, dou um bind entre a conexão da máquina remota com a minha máquina local.
ssh -N -f -L localhost:8080:localhost:8888 michel@asus-i5
Após isso, basta copiar o endereço com o token do Jupyter, ajustar a porta, e mandar abrir.
To access the notebook, open this file in a browser:
file:///C:/Users/Michel/AppData/Roaming/jupyter/runtime/nbserver-5536-open.html
Or copy and paste one of these URLs:
http://localhost:8888/?token=10c872fca0d941183e20d8067a10d31a07b30c4a70e751cd
or http://127.0.0.1:8888/?token=10c872fca0d941183e20d8067a10d31a07b30c4a70e751cd
Utilidades
Hosts
No Ubuntu, caso deseje digitar o hostname ao invés do IP (192.168…), basta incluir o IP seguido do hostname no arquivo abaixo
sudo gedit /etc/hosts
Unidade de Rede
Havia tentado com “pushd \asus-i7\geodata\sourcecode”, mas recomendaram
net use Z: \\asus-i7\Codes
Finalizar Processo na Porta
lsof -ti:8080 | xargs kill -9
lsof -ti:8888 | xargs kill -9
lsof -ti:8889 | xargs kill -9
Referências
- https://ljvmiranda921.github.io/notebook/2018/01/31/running-a-jupyter-notebook/
- https://docs.anaconda.com/anaconda/user-guide/tasks/remote-jupyter-notebook/
- https://www.digitalocean.com/community/tutorials/how-to-install-run-connect-to-jupyter-notebook-on-remote-server
Deixe um comentário