Raspberry PiをFirewall/NAT越しにSSH・RDPをする【ngrok】

Raspberry PiをFirewall/NAT越しにSSH・RDPをする【ngrok】

前回のエントリーに引き続きngrokに関連した話題になります。

uepon.hatenadiary.com

前回の話題でhttphttpsに関しては無事にngrokを経由して公開をおこなうことができました(httpsに関しては言及してませんでしたが、URLは同時に発行されますのでそのまま使用できます。あと、httpなサーバーブログラムでも、ngrok側で対応してくれるようです。)

後はその他のサービスはどうなるかになります。ngrokはレジストしていないとhttp関連しか対応することができないのですが、サービスにユーザ登録を行うと別のサービスなどにも対応することができるというメリットがあります。

ユーザ登録

メインページに行って画面上部の【Login】をクリックします。

f:id:ueponx:20170709115536p:plain

画面が切り替わります。

f:id:ueponx:20170709115551p:plain

メールアドレスやパスワードを使っても新規登録を行うことはできるのですが、Githubアカウントやgoogleアカウントでもログインが可能です。今回はGithubアカウントを使用してみます。画面内の【Login with Github】のボタンをクリックします。

すると、画面が切り替わりログインが完了し(登録状態になります。)、【Get Started】という画面の表示になり自分のサービストークンなどが表示される画面になります。

f:id:ueponx:20170709115602p:plain

この【Get Started】の画面の手順通りに進めます。発行されたトークンを引数に以下のコマンドを実行します。実行すると~/.ngrok2/ngrok.yamlトークン情報が保存されます。CLIで実行する度に指定することもできるのですが面倒なのでこの方法のほうがおすすめです。

$ ./ngrok authtoken 【発行されたAuthkey】
Authtoken saved to configuration file: /home/pi/.ngrok2/ngrok.yml

以降はトークンの指定は自動的に行われます。 後は該当するポートなどを指定してngrokを起動します。

SSH接続を行う

例えば、SSHであればport番号は22でtcp接続になりますので

$ ./ngrok tcp 22

となります。実行するとこんな風な画面になります。

f:id:ueponx:20170709121718j:plain

あとは画面に記載されたForwardingの値を使用して接続をします。 teratermの場合にはログインダイアログで

f:id:ueponx:20170709115717j:plain

【host】と【port番号】を変更します。これで接続はOKです。

RDP接続を行う

RDPであればポート番号は3386になりますので以下のようにします。ネットを検索していたところ、デフォルトではサービスリージョンがus(アメリカ)になってしまうのですが、コマンドラインでサービスリージョンを変更できるようです。(-regionオプションがそれになります)。今回は流れるデータが大きくなるのでap(アジアパシフィック)にしました。

$ ./ngrok tcp -region=ap 3389

となります。

【参考】

qiita.com

情報ありがとうございます。

実行すると以下のような画面になります。RegionもAsia Pacificに変更されているのがわかります。

f:id:ueponx:20170709121734j:plain

これで準備完了です。接続はWindowsリモートデスクトップ接続で行います。xrdpなどはインストールされている前提となります。Forwardingの値を【コンピュータ】のパラメータに設定して【接続】をクリックします。

f:id:ueponx:20170709115744j:plain

vncのログインダイアログが表示されるのでいつも通りログインすれば…

f:id:ueponx:20170709115757j:plain

Xが起動します。まあ、実用できるかというとやっぱり反応はそれほど良くないので、保険のような感じなるのかもしれませんが。

f:id:ueponx:20170709115813j:plain

ちなみにngrokでも接続ステータスもみることができるので色々良さそうです。

f:id:ueponx:20170709115608p:plain

終わりに

ngrokを使用することでローカルの環境を比較的自由にネットワークサービスを公開できるようになりました。あくまでも、デバッグハッカソンなどでの短時間の使用になるかと思います。ご使用にはごくれぐれもご注意ください。