インターネット世界の「どこでもドア」　remote.it（リモートイット）

# remote.it （リモートイット）とは
remote.itはオープンポートを必要としない、
まさに「どこでもドア」のようにリモートアクセスやP2P接続を提供するサービスです。

インターネットを介したリモートアクセスをする場合、専用線接続を除き、
基本的にはインターネット上にグローバルIPとオープンポートを用意しアクセスする、という手法を取ります。
主な手法はVPNやポートフォワーディングです。

しかしインターネット上にポートをオープンする以上、
世界中の攻撃者からの攻撃対象として晒されることは避けられません。
remote.it はこの攻撃対象になるリスク排除しリモートアクセスを提供するサービスです。
FWのインバウンドポートは全閉じでOKです。

空き巣は玄関や窓があるから入ろうとします。
remote.itはそもそも玄関や窓を作らないので、空き巣の対象にならないのです。
外から家に入るときは、どこでもドアで入ります。

:::note info
2022.12.15 時点の情報で以下記事内容をアップデートしています
:::

# Raspberry Piに入れてリモートアクセスしてみる
このサービスは実際に利用してみた方が理解しやすいと思うので、
まずはラズパイに入れてみましょう。

## Desktopアプリケーションのインストール
下記URLからDesktopアプリケーションをダウンロードしインストールします。
[Windows](https://www.remote.it/download-list?platform-list=windows&products=desktop#Download-Results) / [MacOS](https://www.remote.it/download-list?platform-list=mac&products=desktop#Download-Results)

[こちら](https://support.remote.it/hc/ja/articles/4420541365773#h_01FSJZJR5S7P6RRFFD6AD3S0N2)に詳細なインストール手順が記載されています。

DesktopアプリケーションをインストールしなくてもブラウザベースのWebアプリケーションで利用することも可能です。
https://app.remote.it

:::note info
接続先のデバイスとダイレクトにP2P通信する場合はDesktopアプリケーションが必要です。
Webアプリケーションを利用した場合はクラウド上のProxyサーバを経由した通信になります。
:::

P2P通信とProxy通信の違いについては、こちらの[@masa-e](https://qiita.com/masa-e)さんの記事で紹介されています。

https://qiita.com/masa-e/items/e9ddc15cce3dfbf17704

どちらの接続方法も、接続先デバイス環境のFWインバウンドポートは全閉じでOKということに変わりはありません。

## remote.itアカウントの取得
Desktopアプリケーションを起動する（もしくは[Webアプリケーション](https://app.remote.it)へアクセスする）と
下記画面が表示されます。`Sign up for free!`をクリックしアカウントを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224746/402647d3-226a-5f06-d313-883d14b88ca8.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224746/f650d954-404c-9704-55bb-381020470d9a.png)
各情報を入力し、`CREATE ACCOUNT`をクリックすると、登録メールアドレス宛に下記のVerificationメールが送信されます。
メール本文中の`Verify Email`リンクをクリックしてメールアドレスを認証します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224746/22b03988-4ed3-8796-3804-96e97102da2b.png)

:::note warn
環境によってはVerificationメールが迷惑メールフォルダ等に入ってしまう場合があるのでご注意ください。
:::

:::note info
Googleアカウントをお持ちであれば、Googoleアカウントをremote.itアカウントとして利用することも可能です。
:::

## Raspberry Pi用のワンライナーインストールコードを取得
remote.itアカウントを取得できたので、サインインします。
サインイン後、下記画面が表示されるので`＋`をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224746/d28cb001-7d4d-7f24-c081-b15116364f69.png)
Raspberry Piのアイコンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224746/99c77f57-1b91-8950-0749-dfaa232ddc95.png)
あなたのアカウント用のインストールコードが発行されました！コピーボタンをクリックしてコードをコピーします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224746/1afe0545-2d63-5762-c2eb-8e307d144c1f.png)

## Raspberry Piをremote.itデバイスとして登録
インターネット接続されているラズパイへSSH接続します。
まずはパッケージ一覧を最新化します。
```
sudo apt update -y
```
つづいて前手順でコピーしたワンライナーインストールコードを実行します。
`R3_REGISTRATION_CODE`はアカウント毎に異なります。
前手順で取得したコードをそのまま貼り付けて実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224746/b19b267a-98ad-2760-13ac-14926a446c8b.png)
これでremote.itのインストールとデバイス登録、SSHサービスの追加までが自動的に完了します。

さあ、ラズパイへリモート接続してみましょう！

## Raspberry Piへリモート接続してみる
ラズパイへリモート接続してみましょう。
Desktopアプリケーションを起動、もしくは[Webポータル](https://app.remote.it/)へアクセスしサインインします。
すると、先程登録したデバイスが表示されています。デバイス名をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224746/a8063be5-a005-db73-7108-0606eb2fac48.png)

:::note info
デバイス名はラズパイのホスト名になります。
:::

デバイス名をクリックすると、下記画面が表示されます。
SSHサービスを選択し、`START`をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224746/6e101a69-7939-a881-83a5-d609015f12f3.png)

SSH接続するためのホスト名、ポート番号を取得できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224746/f9dda2a0-9eaa-1e4b-ec24-c46ff3cb8eb9.png)

SSHアクセスしてみましょう。`LAUNCH`ボタンをクリックすると自動的にSSHクライアントが起動し、
取得したホスト名、ポート番号でアクセスします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224746/a2c7cf30-3ed2-57e8-2198-89c29251d96d.png)
ラズパイのユーザ名を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224746/e8727f75-f72c-25cd-b2ea-f43a7c68fe1c.png)
Windowsの場合は自動的にコマンドプロンプトが立ち上がります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224746/236e26af-e4c9-98b9-e0b2-9688be74d16f.png)
接続できました！

続いて、VNCのリモート接続も試してみます。
まずは、ラズパイ上でVNCを有効します。

```
sudo raspi-config
```
表示されるメニューから、`3 Interface Options`を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224746/534617c4-8ce1-56f7-4502-6e245a88c19e.png)
`I3 VNC`を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224746/31120ded-294d-6702-6c32-aab59ead258b.png)

`Yes`を選択します。
![pi_raspberrypi___.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224746/bd907396-d307-aedc-a58b-b7b9ee88b97c.png)
`Ok`を選択し、
![pi_raspberrypi___.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224746/d025e64d-c018-64b4-c88d-f007176b1b13.png)
`Finish`で終了します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224746/d14c5f34-e516-79dc-bf2c-8c6e79497320.png)

VNCを有効化できました。

続いて、VNCをremote.itサービスとして登録するために、remote.itアプリケーション画面に戻ります。
サービス追加ボタン`＋`をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224746/f64c838e-b01f-7742-7548-d6255379fcaf.png)

SERVICE TYPEに`VNC`をセットし、`SAVE`をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224746/8e29b3fb-1cca-6db7-2c4c-24124e58f672.png)

VNCサービスが追加され、少し待つとオンラインになります。（グレーアウト文字から黒色文字になります）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224746/81da1d1b-a71f-f505-24b7-9dafb941e9d8.png)

SSHと同じように接続してみましょう。
VNCサービスを選択し、`START`をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224746/b8354b8c-d8b5-e255-fb5c-b52fb9d7d21b.png)

VNC接続するためのホスト名、ポート番号を取得できました。
今回はホスト名：ポートをコピーしてみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224746/25be4117-5dcc-d661-9b50-343e958a2b08.png)

VNCクライントの接続先フィールドへ貼り付け、接続してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224746/56c591a2-3f73-1442-a615-7ab0290785c6.png)

接続することができました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224746/68fb0a26-f629-e7d0-e584-3cdefd5438de.png)

ラズパイが設置されているネットワーク環境において、SSHやVNCポートのインターネット公開や
ルータでのポートフォワ-ディングなどは一切行っていません。
元々インターネット接続していたネットワーク構成も変更していません。
remote.itは既存環境への影響を最小限にとどめながらリモート接続環境を提供することができます。

まさに、インターネット世界の「どこでもドア」！

下記サイトで詳細な情報を手に入れることができます。
https://docs.remote.it/
https://support.remote.it/

# 様々なユースケース
ユースケースを追加していく予定です。

 - [これは魔法か？！ インバウンドポートを全閉したAWSのサーバに接続する方法](https://qiita.com/tkhmhiroc/items/0724d4b1d6bc688aa474)
 - [ラズパイにScreenlyとremote.itで遠隔デジタルサイネージ](https://qiita.com/mskairmail/items/226b650fb16256173ea5)
 - [ラズパイにRPi-Cam-Web-Interfaceとremote.itで遠隔Web IPカメラ]
(https://qiita.com/mskairmail/items/25f985927beb5d3f1b04)