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によるポートフォワーディングの例]
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.cshpassword: PASSWORD
[url] http://localhost:手元のポート番号/ [urlの例] http://localhost:8022/