1
Help us understand the problem. What are the problem?

posted at

updated at

Organization

remote.itを使ってベアメタルに接続する

はじめに

本記事はQiita Engineer Festa 2022remote.it を使って○○に接続してみた!に関する記事になります。

remote.itは自宅や工場など遠隔地に存在するエッジデバイスに対して、LAN環境のネットワーク設定を変更することなく、リモート接続ができるサービスです。

サービスのソリューションはとてもシンプルです。
ホームページの導入事例を見ると、課題解決の施策としてRemote.Itの様々な利用例が記載されています。

本記事では個人利用からの視点になりますが、実際にremote.itを用いて自宅にあるベアメタルに接続して、クラウドのようにリモートで使用するための方法について記載しています。
本記事で使用しているベアメタルについては以前、書いた自作PCの組み立て方 ベアメタルで構築する俺のKALI【PC組み立て編】を参照。

remote.it概要

remote.itを利用するにあたり、ホームページに記載がある価格の通りに、個人利用でも5台までなら無料で利用できます。

はじめにを参考にしながら、remote.itを使用するためには以下の作業が必要です。

  • アカウントの作成
  • パッケージのインストール
  • デバイス及びサービスの登録
  • remote.itの接続

remote.itの接続はプロキシと、P2P(略称)と呼ばれるPeer to Peer利用した接続方式に大別できます。
remote.itの接続方式については、Remote.It 技術概要を参照。(※以下の図は左記リンクより引用)

インターネットの世界ではグローバルIPアドレスを持つノードから、プライペートIPアドレス持つノードに対して通信を行うことはできません。
グローバルIPアドレスを持つノードから見た場合、通信先となるネットワークの宛先は1台のノードでしか認識できないためです。そのため、P2Pなどを用いて内部ネットワークのプライペートIPアドレス持つノード群と通信するためには、NAT越えと呼ばれるNAT traversalの技術が使用されています。

remote.itの接続方式で使用されている技術についてより理解するためには、NATに対する理解が重要です。
NATはFull cone NATや、Symmetric NAT等複数の種類が存在します。

remote.itはインターネットに接続するために必要となるグローバルIPアドレスや、VPN等を使用せずに課題解決を行なうことでリモートアクセスを実現しています。

アカウント作成

remote.itにアクセスして「はじめる」を押します。

スクリーンショット 2022-06-25 20.50.41.png

「Sign Up」の画面に遷移するため、アカウント情報を登録します。

スクリーンショット 2022-07-03 21.11.50.png

登録したメールアドレス宛に「Remote.It new account email verification required」の件名で登録確認メールが届きます。確認してリンクを押します。

スクリーンショット 2022-06-25 20.53.38.png

リンクを押すと、アカウントが登録されます。

スクリーンショット 2022-06-25 20.54.39.png

アカウント登録が完了し、サインインを行うと以下の画面に遷移します。

スクリーンショット 2022-06-25 20.55.32.png

demo

「Devices」を見ると、初回サインイン後の状態ではdemo用のマシンが登録されています。

スクリーンショット 2022-06-25 21.27.42.png

demo用のマシンを選択して「SERVICE」を見ると、複数のサービスが確認できます。試しに「SSH Instance」を選択し、「CONNECT」を押します。

スクリーンショット 2022-06-25 21.28.06.png

接続するためのリンクが生成されるため、リンクのアイコンを押してクリップボードにコピーします。

スクリーンショット 2022-06-25 21.28.25.png

ターミナルよりdemo用のマシンへのSSH接続が確認できました。

     ___        ______                             _         _ _   
    / \ \      / / ___|   _ __ ___ _ __ ___   ___ | |_ ___  (_) |_ 
   / _ \ \ /\ / /\___ \  | '__/ _ \ '_ ` _ \ / _ \| __/ _ \ | | __|
  / ___ \ V  V /  ___) | | | |  __/ | | | | | (_) | ||  __/_| | |_
 /_/   \_\_/\_/  |____/  |_|  \___|_| |_| |_|\___/ \__\___(_)_|\__|

https://remote.it/solutions/remote-cloud

remote.itの接続(プロキシ)

プロキシを使用してベアメタルのマシンにSSH接続できるか検証を行います。

まずは必要なパッケージをダウンロードするためにSupported Platformsを確認します。
本記事ではKali Linuxを使用しているため、Debian(amd64)のパッケージを使用します。
Debianは複数の種類がありますが、アーキテクチャが不明の場合、以下Debianのサイト「2.1.1. サポートするアーキテクチャ」が参考になると思います。

パッケージのインストール

amd64のパッケージをダウンロードするためには以下のコマンドを実行します。

$ wget https://downloads.remote.it/remoteit/v4.14.1/remoteit-4.14.1.amd64.deb

amd64のパッケージをダウンロード後、パッケージをインストールするために以下のコマンドを実行します。

$ sudo apt install ./remoteit-4.14.1.amd64.deb

出力例
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了        
状態情報を読み取っています... 完了        
注意、'./remoteit-4.14.1.amd64.deb' の代わりに 'remoteit' を選択します
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  libdav1d5 libdrm-intel1 libgeos3.10.2 liblttng-ust-ctl4 liblttng-ust0
これを削除するには 'sudo apt autoremove' を利用してください。
以下の追加パッケージがインストールされます:
  jq libjq1 libonig5
以下のパッケージが新たにインストールされます:
  jq libjq1 libonig5 remoteit
アップグレード: 0 個、新規インストール: 4 個、削除: 0 個、保留: 2 個。
493 kB 中 388 kB のアーカイブを取得する必要があります。
この操作後に追加で 1,165 kB のディスク容量が消費されます。
続行しますか? [Y/n] y
取得:1 /tmp/remoteit-4.14.1.amd64.deb remoteit amd64 4.14.1 [105 kB]
取得:2 http://linux3.yz.yamagata-u.ac.jp/pub/linux/kali kali-rolling/main amd64 libonig5 amd64 6.9.8-1 [188 kB]
取得:4 http://linux3.yz.yamagata-u.ac.jp/pub/linux/kali kali-rolling/main amd64 jq amd64 1.6-2.1 [64.9 kB]
取得:3 http://ftp.jaist.ac.jp/pub/Linux/kali kali-rolling/main amd64 libjq1 amd64 1.6-2.1 [135 kB]
388 kB を 1秒 で取得しました (375 kB/s)
以前に未選択のパッケージ libonig5:amd64 を選択しています。
(データベースを読み込んでいます ... 現在 307133 個のファイルとディレクトリがインストールされています。)
.../libonig5_6.9.8-1_amd64.deb を展開する準備をしています ...
libonig5:amd64 (6.9.8-1) を展開しています...
以前に未選択のパッケージ libjq1:amd64 を選択しています。
.../libjq1_1.6-2.1_amd64.deb を展開する準備をしています ...
libjq1:amd64 (1.6-2.1) を展開しています...
以前に未選択のパッケージ jq を選択しています。
.../archives/jq_1.6-2.1_amd64.deb を展開する準備をしています ...
jq (1.6-2.1) を展開しています...
以前に未選択のパッケージ remoteit を選択しています。
/tmp/remoteit-4.14.1.amd64.deb を展開する準備をしています ...
remoteit (4.14.1) を展開しています...
libonig5:amd64 (6.9.8-1) を設定しています ...
libjq1:amd64 (1.6-2.1) を設定しています ...
jq (1.6-2.1) を設定しています ...
remoteit (4.14.1) を設定しています ...
Created symlink /etc/systemd/system/multi-user.target.wants/connectd.service → /lib/systemd/system/connectd.service.

--------------------- Claim this device ---------------------

Use the code xxxxxxxx to register this device to your account

--------------------- Claim this device ---------------------

libc-bin (2.33-6) のトリガを処理しています ...
man-db (2.10.2-1) のトリガを処理しています ...
kali-menu (2022.3.0) のトリガを処理しています ...

デバイスの登録

デバイスの登録を行うために「Devices」から「Linux & Raspberry Pi」を選択し、「CLAM CODE」にパッケージインストール後に出力されるコードを入力します。

スクリーンショット 2022-06-25 21.31.36.png

エージェントをインストールするためのコマンドを出力されるため、コピーしてターミナルなどから実行します。

スクリーンショット 2022-06-25 21.33.39.png

上記コマンドを実行後、デバイスが登録されたことが確認できます。
STATUSがOnlineと表示されているので、ターゲットについて正しく認識されていることが確認できます。

スクリーンショット 2022-06-25 21.57.18.png

サービスの登録

リモートから接続するためのサービスを登録するために、「+」を押します。
スクリーンショット 2022-06-25 21.58.16.png

「SERVICE TYPE」は「SSH」を選択し、設定値を確認して「SAVE」を押して保存します。

スクリーンショット 2022-06-25 22.03.14.png

remote.itの接続

「USER NAME」にSSH接続するためのユーザー名を入力して、「CONNECT」を押します。

スクリーンショット 2022-06-25 22.04.23.png

接続用のリンクが生成されるため、コピーします。また、Connectionを見ると、Public Proxyと表示されていることが確認できます。
現在、どのようにして接続しているかはConnectionを見ると分かります。

スクリーンショット 2022-06-25 22.04.40.png

接続用のリンクをブラウザにペーストして、ターミナルを起動します。

スクリーンショット 2022-06-25 22.08.48.png

「許可」を押します。

スクリーンショット 2022-06-25 22.09.12.png

ターミナルが起動されてSSH接続ができました。

┌──(username㉿hostname)-[~]
└─$ 

なお、上記で生成されるリンクは以下のコマンドと同等です。

$ ssh -l <ユーザー名> <Proxy URL> -p <ポート番号>

remote.itの接続(P2P)

P2Pで接続するためためには接続するためのクライアントとなるソフトウェアが必要です。
P2Pで接続するための手順について、Macを例に記載します。

クライアントのインストール

ダウンロード画面にアクセスして「MacOS」のアイコンを押します。

スクリーンショット 2022-06-26 20.04.08.png

デスクトップアプリから対象のCPUアーキテクチャを選択してダウンロードを行います。
CPUアーキテクチャが不明な場合は、ターミナルで$ uname -mコマンドを実行すると確認できます。

スクリーンショット 2022-06-26 20.04.28.png

ダウンロード後、デスクトップアプリをインストールします。

スクリーンショット 2022-06-26 20.04.54.png

remote.itの接続

デスクトップアプリを起動後、サインインを行います。

スクリーンショット 2022-06-26 20.05.47.png

デスクトップアプリにサインイン後、P2P接続の設定を行うために「ADD TO NETWORK」を押します。

スクリーンショット 2022-06-26 20.08.27.png

接続用のリンクが生成されるため、コピーします。

スクリーンショット 2022-06-26 20.20.15.png

ターミナルを起動後、接続用のリンクをペーストしてSSH接続を行います。

┌──(username㉿hostname)-[~]
└─$ 

P2Pの場合、ConnectionがPear to pearと表示されていることが確認できます。

スクリーンショット 2022-06-26 22.11.50.png

セキュリティとパフォーマンスの観点からPeer to Peer(P2P)接続が推奨されています。

二要素認証

セキュリティを強化するために二要素認証を使用することを推奨します。

二要素認証を有効化するためには、アカウントの設定から「Security」を選択して、TWO-FACTOR AUTHENTICATIONの「TURN ON」を押します。

スクリーンショット 2022-06-25 22.54.59.png

「Authenticator app」を選択して「NEXT」を押します。

スクリーンショット 2022-06-25 22.55.15.png

QRコードが表示されるのでGoogle Authenticatorなどのアプリから読み取ってコードを入力します。
コード入力後、「SUBMIT」を押します。

スクリーンショット 2022-06-25 22.55.30.png

以降、remote.itにサインインする際は二要素認証が有効になります。

おわりに

本記事ではペネレーションテストなどで使用されるKali Linuxがインストールされたベアメタルに接続しました。

リモートで接続するための目的は人それぞれ違いますが、remote.itを使用することでリモートから自宅のPCなどに接続して、クラウドのように自由にどこからでも作業を行うことができます。

セキュリティ観点で考えた場合に運用で考慮すべき点はありますが、利便性がある面白いサービスだと思います。
また、背景で使用されているネットーク技術に対しても興味深いものを感じました。

他のデバイスにも導入して使いたいと思います。

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
1
Help us understand the problem. What are the problem?