Raspberry PiをFirewall/NAT越しにSSH・RDPをする【ngrok】
前回のエントリーに引き続きngrok
に関連した話題になります。
前回の話題でhttp
、https
に関しては無事にngrok
を経由して公開をおこなうことができました(https
に関しては言及してませんでしたが、URLは同時に発行されますのでそのまま使用できます。あと、http
なサーバーブログラムでも、ngrok
側で対応してくれるようです。)
後はその他のサービスはどうなるかになります。ngrok
はレジストしていないとhttp
関連しか対応することができないのですが、サービスにユーザ登録を行うと別のサービスなどにも対応することができるというメリットがあります。
ユーザ登録
メインページに行って画面上部の【Login】をクリックします。
画面が切り替わります。
メールアドレスやパスワードを使っても新規登録を行うことはできるのですが、Githubアカウントやgoogleアカウントでもログインが可能です。今回はGithubアカウントを使用してみます。画面内の【Login with Github】のボタンをクリックします。
すると、画面が切り替わりログインが完了し(登録状態になります。)、【Get Started】という画面の表示になり自分のサービストークンなどが表示される画面になります。
この【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
となります。実行するとこんな風な画面になります。
あとは画面に記載されたForwardingの値を使用して接続をします。 teratermの場合にはログインダイアログで
【host】と【port番号】を変更します。これで接続はOKです。
RDP接続を行う
RDPであればポート番号は3386になりますので以下のようにします。ネットを検索していたところ、デフォルトではサービスリージョンがus(アメリカ)になってしまうのですが、コマンドラインでサービスリージョンを変更できるようです。(-region
オプションがそれになります)。今回は流れるデータが大きくなるのでap(アジアパシフィック)にしました。
$ ./ngrok tcp -region=ap 3389
となります。
【参考】
情報ありがとうございます。
実行すると以下のような画面になります。RegionもAsia Pacificに変更されているのがわかります。
これで準備完了です。接続はWindowsのリモートデスクトップ接続で行います。xrdpなどはインストールされている前提となります。Forwardingの値を【コンピュータ】のパラメータに設定して【接続】をクリックします。
vncのログインダイアログが表示されるのでいつも通りログインすれば…
Xが起動します。まあ、実用できるかというとやっぱり反応はそれほど良くないので、保険のような感じなるのかもしれませんが。
ちなみにngrok
でも接続ステータスもみることができるので色々良さそうです。
終わりに
ngrok
を使用することでローカルの環境を比較的自由にネットワークサービスを公開できるようになりました。あくまでも、デバッグやハッカソンなどでの短時間の使用になるかと思います。ご使用にはごくれぐれもご注意ください。