Last Updated: April 25, 2022
·
1.106K
· STK

SSH経由でIPython Notebookにリモートアクセスする方法

シナリオ:リモートで自分のローカルコンピューターからIPhyton Notebookを開き操作したい。SSHトンネルを使い操作できるようにします。このトンネルはIPythonのインスタンスのPortをローカルマシンに転送します。これによりローカルコンピューターからIPythonをリモート操作できるようになります。

リモート操作の設定は、最初にIPython Notebookサーバーの設定からです:

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

通常であればIPythonは利用可能なNotebookを表示しますが、この動作は必要ありません。直接設定にすすみます。(ブラウザーを利用しないで操作します)また、Portを変更します。理由は後ほどわかりますが、一旦変更します。

ローカルコンピューターは、SSHトンネルの設定を変えます:

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

最初の設定、-NはSSHにリモートコマンドを受け付けると命令します。そして、Portを転送するのに役立ちます。次の設定、-fはSSHをバックグラウンドに追いやる効果があります。そのため、ローカルのトンネル経由でつながったターミナルはそのまま使えるようになっています。最後に、-LはPort転送の設定です。(リモートPortは8889、ローカルPortは8888となります)

ローカルコンピューターのブラウザーを開き、アドレスバーに下記のホストを入力します:

localhost:8888

リモートで動いているIPython Notebookのサーバーを見ることができます。

which displays your remotely running IPython notebook server.

ローカルコンピューターのSSHトンネルをクローズするには、マニュアルで接続を切る必要があります:

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

代替案として、トンネルを-fの設定をしないで使用します。これにより、バックグラウンドに追いやられることなく、一番上の画面に表示されます。このため、Ctrl-Cでシャットダウンできます。

リモートマシーンのIPytonサーバーはctrl-c,ctrl-cと2回押すとシャットダウンできます。