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回押すとシャットダウンできます。