1. 今回の要約
- remote.it CLIを使用して、Linuxへremote.itをインストールする
- remote.itを使用して、AWSの踏み台サーバ(Bastion)へアクセスする
- remote.itを使用して、VPC Private SunbetのInstanceへアクセスする
AWSのBastion(Linux)にremote.itをインストールして、remote.itターゲット(デバイス)として利用します。remote.itを使用すると、Bastionへのアクセスにオープンポート(セキュリティグループでのInboundアクセス許可)が不要になります。またremote.itでは、接続先(サービス)をremote.itのインストールされたデバイスにする他に、そのデバイスに繋がれたネットワーク上の宛先にすることができます。これを利用すると、Bastionへのログインを省いて、目的のサーバへのダイレクトな接続が行えます。
2. 構成
- AWS VPC/Public Subnet上にあるBastionへremote.itをインストールします
- BastionのOSはAmazon Linux2とします (その他Linux OSでも可)
- 以下は事前に行われていることとします
- remot.itアカウントの取得
- 接続元Clientへのremote.it Desktop Appインストール
3. remote.itターゲットデバイス(Bastion)へのremote.itインストール
remote.it CLIソフトウェアの取得
remote.it CLIソフトウェアを入手します。各種プラットフォーム用のremote.it CLIソフトウェアの入手先URLは、以下を確認ください。
-
Windows
-
macOS
-
Linux
- https://downloads.remote.it/cli/latest/remoteit_linux_x86_64 (amd64)
- https://downloads.remote.it/cli/latest/remoteit_linux_arm64 (arm64)
- https://downloads.remote.it/cli/latest/remoteit_linux_armv7 (armhf v7)
- https://downloads.remote.it/cli/latest/remoteit_linux_armv6 (armhf v6)
- https://downloads.remote.it/cli/latest/remoteit_linux_armv5 (armhf v5)
-
今回は、Linux/amd64用のソフトウェアを使用します。AWSのBastionにログインをして、remote.it CLIをダウンロードしてください。
$ curl -LkO https://downloads.remote.it/cli/latest/remoteit_linux_x86_64
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 2875k 100 2875k 0 0 5509k 0 --:--:-- --:--:-- --:--:-- 5509k
$
$ ls -l
total 2876
-rw-rw-r-- 1 ec2-user ec2-user 2944900 Oct 12 09:37 remoteit_linux_x86_64
- ダウンロードしたremote.it CLIを、実行パスの通ったディレクトリにコピーします(併せて、ファイル名を修正します)。コピーしたファイルに実行権限を付与してください。
$ sudo cp remoteit_linux_x86_64 /usr/bin/remoteit
$ sudo chmod +x /usr/bin/remoteit
$
$ ls -l /usr/bin/remoteit
-rwxr-xr-x 1 root root 2944900 Oct 12 09:45 /usr/bin/remoteit
- remote.it CLIが正しく配置されたことを確認します。
$ sudo remoteit version
1.6.5
CLIサービスの登録と関連ツールのインストール
- remote.it CLIサービスをsystemdに登録します。
$ sudo remoteit agent install
? Installed and started system service successfully
$
$ systemctl status it.remote.cli.service
● it.remote.cli.service - remote.it agent, manages connections
Loaded: loaded (/etc/systemd/system/it.remote.cli.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2020-10-12 09:53:31 UTC; 2min 25s ago
Docs: https://docs.remote.it
Main PID: 10206
CGroup: /system.slice/it.remote.cli.service
mq10206 n/a
Oct 12 09:53:31 ip-10-0-2-142.ap-northeast-1.compute.internal systemd[1]: Started remote.it agent, manages ....
Oct 12 09:53:31 ip-10-0-2-142.ap-northeast-1.compute.internal systemd[1]: Starting remote.it agent, manages....
Hint: Some lines were ellipsized, use -l to show in full.
- 次に、remote.it CLIを利用して、関連バイナリのインストールを行います。
$ sudo remoteit tools install
? Installing tools
? Tools installed to: '/usr/bin'
$
$ ls -l /usr/bin |grep -e remoteit -e connectd -e muxer
-rwxr-xr-x 1 root root 162872 Oct 12 09:57 connectd
-rwxr-xr-x 1 root root 7588 Oct 12 09:53 connectd_options
-rwxr-xr-x 1 root root 7909 Oct 12 09:53 connectd_task_notify
-rwxr-xr-x 1 root root 34808 Oct 12 09:57 demuxer
-rwxr-xr-x 1 root root 30712 Oct 12 09:57 muxer
-rwxr-xr-x 1 root root 2944900 Oct 12 09:45 remoteit
remote.it へのサインイン
- 最後に、remote.itアカウントでのサインインを行います。
$ sudo remoteit signin
Username: xxxxxxxx@stylez.co.jp [remote.itアカウントを入力]
Password:
? SIGNIN in progress ...
? Login with remote.it account
? Download & install dependencies
? NEXT-ACTION: run 'remoteit register' to register this device into your remote.it account
- remoteit statusコマンドを使用すると、サインインされたことが確認できます。
※Usernameに、サインインされたアカウントが表示されます
$ sudo remoteit status
? Fetching status
Username: xxxxxxxx@stylez.co.jp
Device:
No device...
Services:
Connections:
以上で、remote.it CLIを使用するための準備が完了しました。
次に、remote,itにターゲットデバイスとサービスを登録していきます。
4. remote.it ターゲットデバイスとサービスの登録
デバイスの登録
- デバイスをremote.itに登録します。デバイス名を登録できますので、任意の名前(今回はremoteit-Linux-Bation)を入力してください。
$ sudo remoteit register
Device name: remoteit-Linux-Bastion
? REGISTER in progress ...
? Login with remote.it account
? Register device 'remoteit-Linux-Bastion'
? Applying config
? NEXT-ACTION: run 'remoteit add' to add services to this device
- 登録したデバイスは、remoteit statusコマンドをjson(--json or -j)で表示させることにより確認することができます。
$ sudo remoteit status --json
{
"device": {
"name": "remoteit-Linux-Bastion",
"id": "xx:xx:xx:xx:xx:xx:xx:xx",
"state": "connected",
"error": {
"message": ""
},
"address": "127.0.0.1:65535",
"startedAt": "2020-10-13T04:31:44Z",
"pid": "13701"
},
"services": [],
"username": "xxxxxxxx@stylez.co.jp",
"connections": []
}
サービスの登録(デバイスローカル)
- remote.itでは、デバイスに対してアクセスさせたい通信(特定ポート宛てのリモート接続)をサービスとして登録します。まずは、このデバイス(Bastion)宛てのSSH(TCP/22)を登録してみます。サービス名を登録できますので、任意の名前(今回はSSH)を入力してください。
※希望のサービスタイプがメニューに無い場合には、tcpを選択してください
$ sudo remoteit add
× AVAILABLE TYPES
× tcp - TCP
× vnc - VNC
× rdp - RDP
× http-proxy - HTTP reverse proxy
× https-proxy - HTTPS reverse proxy
× ssh - SSH
× http - HTTP
× https - HTTPS
× samba - Samba
× bulk - Bulk
× nx-witness - NX Witness
× next-cloud - NextCloud
× openvpn - OpenVPN
× multiport - MultiPort
Service type: ssh
Port: 22
Service name: SSH
? ADD in progress ...
? Login with remote.it account
? Creating 'SSH' service named 'SSH' at '127.0.0.1:22'
? NEXT-ACTION: run 'remoteit add' to add more services
- 登録したサービスは、remoteit statusコマンドをjson(--json or -j)で表示させることにより確認することができます。
$ sudo remoteit status --json
{
"device": {
"name": "remoteit-Linux-Bastion",
"id": "xx:xx:xx:xx:xx:xx:xx:xx",
"state": "connected",
"error": {
"message": ""
},
"address": "127.0.0.1:65535",
"startedAt": "2020-10-13T04:31:44Z",
"pid": "13701"
},
"services": [
{
"name": "SSH",
"id": "xx:xx:xx:xx:xx:xx:xx:xx",
"state": "connected",
"error": {
"message": ""
},
"address": "127.0.0.1:22",
"startedAt": "2020-10-13T04:43:31Z",
"pid": "13794",
"disabled": false
}
],
"username": "xxxxxxxx@stylez.co.jp",
"connections": []
}
サービスの登録(デバイスリモート)
-
remote.itのサービスはターゲットデバイス宛ての通信の他に、ターゲットデバイスを経由してそのデバイスに繋がれたネットワーク上にある、他のホスト宛ての通信(特定ポート宛てのリモート接続)を登録することができます。
-
つぎに、リモートホスト宛てのSSH(TCP/22)を登録してみます。リモートホスト宛てにサービスを登録する場合には、remoteit addコマンドに--hostname [hostname/ipaddress]オプションで、リモートホストを指定してください。サービス名を登録できますので、先程とは異なる任意の名前(今回はRemoteHost1-SSH)を入力してください。
※希望のサービスタイプがメニューに無い場合には、tcpを選択してください
$ sudo remoteit add --hostname 10.0.5.224
× AVAILABLE TYPES
× tcp - TCP
× vnc - VNC
× rdp - RDP
× http-proxy - HTTP reverse proxy
× https-proxy - HTTPS reverse proxy
× ssh - SSH
× http - HTTP
× https - HTTPS
× samba - Samba
× bulk - Bulk
× nx-witness - NX Witness
× next-cloud - NextCloud
× openvpn - OpenVPN
× multiport - MultiPort
Service type: ssh
Port: 22
Service name: RemoteHost1-SSH
? ADD in progress ...
? Login with remote.it account
? Creating 'SSH' service named 'RemoteHost1-SSH' at '10.0.5.224:22'
? NEXT-ACTION: run 'remoteit add' to add more services
- 登録したサービスは、先程同様にremoteit statusコマンドをjson(--json or -j)で表示させることにより確認することができます。
$ sudo remoteit status –json
{
"device": {
"name": "remoteit-Linux-Bastion",
"id": "xx:xx:xx:xx:xx:xx:xx:xx",
"state": "connected",
"error": {
"message": ""
},
"address": "127.0.0.1:65535",
"startedAt": "2020-10-13T04:31:44Z",
"pid": "13701"
},
"services": [
{
"name": "SSH",
"id": "xx:xx:xx:xx:xx:xx:xx:xx",
"state": "connected",
"error": {
"message": ""
},
"address": "127.0.0.1:22",
"startedAt": "2020-10-13T04:43:31Z",
"pid": "13794",
"disabled": false
},
{
"name": "RemoteHost1-SSH",
"id": "xx:xx:xx:xx:xx:xx:xx:xx",
"state": "connected",
"error": {
"message": ""
},
"address": "10.0.5.224:22",
"startedAt": "2020-10-13T05:11:46Z",
"pid": "14076",
"disabled": false
}
],
"username": "xxxxxxxx@stylez.co.jp",
"connections": []
}
以上で、ターゲットデバイスとサービスの登録が完了しました。
次に、クライアントから登録されたターゲットとデバイスを確認して接続を行います。
5. remote.itクライアントからのリモート接続
-
Deviceタブに、登録したターゲットデバイス(remote.it-Linux-Bastion)が表示されています。接続するデバイス(remoteit-Linux-Bastion)をマウスで選択してください。
-
デバイスに登録したサービスが2つ表示されています。以下の例では、サービス「SSH」はターゲットデバイス(Bastion)のローカルのSSHポートへ接続するサービスで、もう一方のサービス「RemoteHost1-SSH」は、ターゲットデバイス(Bastion)のネットワークに接続されたリモートホスト(Private Subnet上のEC2 Instance)のSSHポートへ接続するサービスとして登録されています。
-
サービスへの接続が施行され、ボタンが青色のDISCONNECTになれば接続完了です。この時、サービス名(SSH)の下にポート番号が表示されています(localhost:33000)。
-
SSHで接続を行うためのTerminalソフトウェアを実行し、接続先を先程remote.itで確認したlocalhost:33000としてください。
※ユーザIDやPassword/Keyなどは普段ご利用のものを使用してください
-
Bastionへの接続が行えました。remote.itがCONNECTしたBastionへの接続先をlocalhost:33000にマッピングしてくれています。そのため、remote.itを使用した場合には、Terminalの接続先がBastionのアドレスではなく、マップされたローカルのポートとなっています。
※このローカルのポートは、自動的に可変(33000以降)の番号が割り当てられるか、もしくは任意に設定ができます(一度接続したポート番号は次回接続時に再利用も可能です)
次に、もう一つ登録したサービス(Privateサブネット上のEC2 Instance)への接続を行ってみます。
-
サービス「RemoteHost1-SSH」の左にある緑色のCONNECTボタンをマウスで押下してください。ボタンが青色のDISCONNECTになれば接続完了です。先程と同じように、サービス名(RemoteHost1-SSH)の下にポート番号が表示されています(localhost:33001)。
-
SSHで接続を行うためのTerminalソフトウェアを実行し、今度は接続先を先程remote.itで確認したlocalhost:33001としてください。
※ユーザIDやPassword/Keyなどは普段ご利用のものを使用してください
-
Private Subnet上にあるInstanceへの接続が行えました。Bastionのremote.itを経由して接続されていますので、Bastionへのログインは不要となります。
-
接続を終える場合には、クライアント端末のremote.itで、該当のDISCONNECTと表示されているボタンを押下します。ボタンが緑色のCONNECTになれば切断完了です。
-
一度接続したサービスは、Connectionsタブからでも接続が可能です。Connectionタブを使用することにより、目的のサービスを素早く見つけることができます。
6. remote.it CLI その他の機能について
-
remote.it CLIのその他のオプションは、remoteit --helpにて確認することができます。また、各コマンドの詳細オプションが知りたい場合には、各コマンドの最後に同様に--helpと入力してください。
-
インストールしたremote.itの各登録情報などを削除する場合には、以下のコマンドを使用してください。
コマンド | 実行内容 |
---|---|
remoteit delete | サービスの登録削除 |
remoteit unregister | デバイスの登録削除 |
remoteit uninstall | 登録情報とソフトウェアの削除 |