Acesso remoto a notebooks IPython via SSH

Cenário: em seu computador local, você deseja abrir e manipular um notebook IPython em execução em um computador remoto. Faremos isso abrindo um túnel SSH. Esse túnel encaminhará a porta usada pela instância IPython em execução remota para uma porta na máquina local, onde pode ser acessada em um navegador como uma instância IPython em execução local.


Na máquina remota , inicie o servidor de notebooks IPython:

remote_user@remote_host$ ipython notebook --no-browser --port=8889

Normalmente o IPython abre um navegador para exibir os blocos de notas disponíveis, mas não precisamos disso, então usamos a opção –no-browser . Também alteramos a porta para 8889, por nenhum outro motivo a não ser para mostrar como isso é feito.

Na máquina local , inicie um túnel SSH:

local_user@local_host$ ssh -N -f -L localhost:8888:localhost:8889 remote_user@remote_host

A primeira opção -N informa ao SSH que nenhum comando remoto será executado e é útil para encaminhamento de porta. A segunda opção -f tem o efeito de que o SSH ficará em segundo plano, de forma que o terminal de habilitação de túnel local permanece utilizável. A última opção -L lista a configuração de encaminhamento de porta (porta remota 8889 para porta local 8888).

Agora abra seu navegador na máquina local e digite na barra de endereço

localhost:8888

que exibe seu servidor de notebook IPython em execução remota.


Para fechar o túnel SSH na máquina local , procure o processo e elimine-o manualmente:

local_user@local_host$ ps aux | grep localhost:8889
local_user
18418 0.0 0.0 41488 684 ? Ss 17:27 0:00 ssh -N -f -L localhost:8888:localhost:8889 remote_user@remote_host
local_user
18424 0.0 0.0 11572 932 pts/6 S+ 17:27 0:00 grep localhost:8889

local_user@local_host$ kill
-15 18418

Como alternativa, você pode iniciar o túnel sem a opção -f . O processo permanecerá em primeiro plano e pode ser encerrado com ctrl-c .

Na máquina remota , elimine o servidor IPython com ctrl-c ctrl-c .