2018/10//30 Updated by

Jupyter

Jupyter Notebookに外部のPCからアクセスする


[Up] Japanese English

[前提条件]


遠隔PCで動作しているJupyter Notebookサーバにブラウザでアクセスする

SSH を用いて Local PC のポートから Remote PC のポートにフォワーディングする

cygwin上でsshを用いてlocal PCの適当なポートを、TARGET PCの 8888 番ポートにフォワーディングする。

  [ssh でポートフォワーディングを指定するための構文]
$ ssh -N -f -L LOCAL_PORT:localhost:REMOTE_PORT USERNAME@HOSTNAME

たとえば、local PCの 8022番ポートを remoet PC の 8888 番ポートにフォワーディングするには次のように指定する。 remote PC のIP Addressは 192.168.1.10、remote PC 上でのユーザ名は nitta, そのパスワードはPASSWORD であるとする。

  [sshによるポートフォワーディングの例]
$ ssh -N -f -L 8022:localhost:8888 nitta@192.168.1.10 password: PASSWORD

localhost は Local PC のIP Addressであり 127.0.0.1 を表す。 127.0.0.1 の 8022 番ポートを、192.168.1.10 の 8888 番ポートにフォワーディングする。

Local PC上のブラウザで IP アドレス 127.0.0.1 の8022番ポートにアクセスすると、 Loal PCのsshが Remote PCのsshdと通信を行い、 Remote PC上の sshd は Remote PC の 8888 番ポートでacceptしているjupyter notebook に アクセスしてくれる。 これは、Jupyter Notebook Server からみると locahost 内のプロセスからの通信となるので、 外部からのアクセスのように制限がかかることはない。

次のようなシェル・スクリプトを作っておいて cygwin 上で "./go.csh" のように呼び出して使うと、 ポートフォラーディングの接続が切れないので便利である。 (wgetをインストールしておくこと。)

go.csh
#!/bin/tcsh -f

set USERNAME=nitta
set HOST=192.168.1.10
set LPORT=8022

ssh -N -f -L ${LPORT}:localhost:8888 ${USERNAME}@${HOST}

while (1)
  cd /tmp; wget http://localhost:${LPORT}/ ; rm /tmp/index.html
  sleep 600
end

exit 0

  [go.csh の起動例]
$ ./go.csh password: PASSWORD


Local PC のポートを指定してブラウザでアクセスする

  1. ブラウザを起動する。
  2. 手元のPCの、ポートフォワーディングされているポートににアクセスする。
  3. [url] http://localhost:手元のポート番号/ [urlの例] http://localhost:8022/