2017/11/28

iOSでSSH

AWSの無料枠体験中です。

まともに使うと結構なお金かかりそうなEC2が1年間無料で使えてます。
EC2への接続にはElasticIPでパブリックな固定IPを割り当ててます。
ただパブリックなIPは接続するのに便利な反面、世界中から見えてしまいます。
なので可能な限り起動中のEC2のポートを開けることはしたくありません。
そのため基本的にはSSHとMosh用のポートだけ開けています。
でもせっかくのインターネット上のサーバーなのでSSH以外でも遊んでみたくなります。
jupyterを使ってブラウザ上でpythonコードを書いてみたいなぁ~なんて。
jupyter環境そのものはDockerでさくっと作って、Dockerで立ち上げたjypyterコンテナのポート8800をEC2のポート8800に割当ます。
ここでEC2のセキュリティグループで8800をインバウンドで開けてしまうと、立ち上げたjupyter環境は世界中に開いてしまいます。
かといってEC2の8800ポートを開かないと外部からはjupyterにアクセスできません。
SSHトンネリングでVNCを使うのが簡単なんでしょうが、VNCクライアント立ち上げてその中でブラウザ立ち上げてって…面倒です。
そこでSSHポートフォワードでEC2のポート8800を手元のマシンの適当なポートにポートフォワードすることにしました。
ただ、これ、MacやWindows、いわゆるPCなら簡単です。
でもiPad ProからSSHポートフォワードしてEC2上のjupyterに接続したいんです。

いろいろ検索してみたらバックグラウンドでSSHポートフォワードしてくれるiOSアプリを発見しました。

SSH Tunnel

アプリを起動して右上の「+」ボタンを押して設定を作ります。
HOST SETTINGのHostにEC2のElasticIPを入力
PORT FORWADINGのTypeにLocal port forwading、Destination hostにLocalhost、Destination portはEC2上のjupyterのポートを入力して保存します。



後は設定をタップすれば自動的にバックグラウンドでポートフォワードし続けてくれます。
iPadのSafariからはアドレスに127.0.0.1:ポート番号を入力すればEC2上のjupyterに接続できます。
これでEC2側で開くポートは最低限で接続できるようになりました。
いや、PC使えばなんてことないんですけど…
iPadからガンバるのが楽しいのです…