remote.itで実家のIT環境メンテナンス問題に対応する

※この記事はQiitaEngineerFesta 2022 「remote.it を使って○○に接続してみた！」に参加するために執筆した記事です。

https://qiita.com/official-events/8a2ab08f6fa0f093ae39

# TL;DR

* 義実家のIT環境のメンテナンスを行うために、Windows PCにremote.itを入れてみた
* iPhoneやMacから接続してアプリケーションの追加やファイルの授受が可能か確認した
* 物理故障には対応できないが、簡単なメンテナンスや設定変更には有用であることがわかった

# 挨拶と背景
こんにちは、[株式会社dott](https://thedott.io/)でエンジニャー🐱をしているHALと申します。

Qiitaをご覧の皆さんは、エンジニアもしくはそれに近い技術系の素養を持っている方たちだと思います。
エンジニアからすると、PCセットアップなどは大した作業ではありませんが、一般の人たちにとっては実は結構難しいと感じられている、ということがよくあります。
特に皆さんのご両親（結婚されていれば義両親）や親戚なども、ITは苦手という人が多いのではないでしょうか。

僕の両親は、父がITエンジニアなのでそういったことはありませんが、妻の両親や親類にはエンジニアの人はいないため、ITは苦手という人ばかりです。
そんなわけで義実家のIT環境を改善してあげたいなぁと思ったりするのですが、車で１時間弱かかる距離なので、平日に気軽に行けるというわけではありません。
いくらかの設定だけでも外からリモートでできたらなぁと思いつつ、固定IPやらポート開放やらセキュリティやらと、ちょっと気軽にやれる感じでもないよなぁ、と二の足を踏んでいました。

なんてことを考えていたら、Qiita Engineer Festaの企画で[remote.it](https://ja.remote.it/)の存在を知り、「これだ！！」と思ったのでちょっと環境を作ってみようと思います。

https://ja.remote.it/

# remote.itの良いところ
最初に、今回のリモートメンテナンス環境を作るに当たり、remote.itを使うと何が嬉しいかをまとめておきます。

* IPアドレスを固定する必要がない
    * IPアドレスを固定しようとするとプロバイダ側の設定を調べたりしないといけないけど、義実家なのでプロバイダの契約周りまで聞くのもちょっと厳しいですが、remote.itなら固定IPが不要なので調べなくて済みます
* ルーターの設定を変更する必要がない
    * 外部から直接PCに繋がるようにするためには、ルーター側の設定を変更してポート開放などをしてあげないといけません。自分で買ったルーターじゃないのでちょっと面倒ですが、remote.itでは接続したいPCがインターネットにアクセスできればいいので、設定変更が不要です。
* セキュリティ的な不安が減る
    * 自分もネットワークの専門家というわけでもないので、ポート開放などをセキュリティを担保して実施するのが難しい、という点がありますが、remote.itでは何も開放しなくていいので安心できます
* 簡単にWindows PCに直接つながるので、その後はいかようにもできる
    * 接続先のPCを起動すれば接続できるようになる（remote.itは自動起動する）ので、繋ぐために義両親らに難しい操作をお願いする必要がありません。その後はSSHやリモートデスクトップでいろいろ操作できてしまうので、電話での指示なども必要ありません。
* **重要：個人なら無料で利用できる**
    * やはりこれは大事。少なくとも初期導入時のハードルが低いので助かります。

簡単に、気軽に始められるので、**運用がうまく回らなかったらどうしよう、とか考えなくて済む**のが特に良いですね。

# 構成
システムの構成は、いたってシンプルです。

* 接続元iPhone/Mac（自宅）
* 接続先Windows（義実家）
* インターネット（固定回線）経由
* remote.it

ちなみに、固定回線やルーターの障害時に対応できるよう、接続先PCにモバイルWi-FiやSIMカードを使うことも検討しましたが、義実家は山の中で、携帯の電波も不安定なのでやめました・・・。
ネットワークを冗長化することができたら、より安定したメンテナンス環境が構築できそうですね。

# 構築手順
では、実際にメンテナンス環境を構築していきましょう。

## remote.itに登録する
まずはremote.itにユーザー登録します。
メールアドレス・パスワードのみの登録でOKで、クレジットカード情報などは登録せず試せます。

https://ja.remote.it/

サイトにアクセスし、右上の「はじめる」から登録していきます。
なお、Googleアカウントでも登録可能なようですが、その場合はサインアップの画面からではなく、サインインの画面の方から行くような導線になっているようです・・・。
ここはちょっと謎。

## 接続先Windowsにremote.it Desktopアプリをインストールする
続いて接続先のWindowsにデスクトップアプリをインストールします。

https://ja.remote.it/download?platform-list=windows

こちらから対応するWindows用アプリを選択します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571256/b759b4fb-a942-3c9c-6e88-dc381dcafbba.png" width="700" />

今回はデスクトップアプリなので一番上のものを選びます。
ダウンロードしたらダブルクリックしてインストーラを起動し、特にこだわりがなければデフォルト設定でぽんぽん入れちゃいましょう。

インストールが終わったらアプリケーションを起動します。
（インストーラの最後にアプリケーションを起動するチェックボックスがあるので、そのまま起動でもOK）

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571256/15766149-167f-34d6-d701-156b10aa005c.png" width="700" />

起動するとサインイン画面が出るので、サインインしましょう。
こんな画面か

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571256/4aae4930-76ed-3224-f909-43c8276d706d.png" width="700" />

こんな画面が表示されればOKです。
（Windowサイズによって表示が変わります。）

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571256/fa0fb463-6769-56af-529f-18d3fe036228.png" width="600" />

## Windowsのリモート接続機能を許可する（SSHサーバーのインストール）
続いて、リモートから接続する際に使用する機能を許可します。
一番楽なのはリモートデスクトップですが、Windows Pro以上でないと使用できないため、今回は泣く泣くSSHで我慢します。

「設定画面」→「アプリ」→「オプション機能」を選択します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571256/d87183ee-93a9-9e1e-8e28-14b3bdedeb74.png" width="700" />

「オプション機能を追加する」の「機能を表示」をクリックし、OpenSSHサーバーにチェックを入れて「次へ」→「インストール」とクリックします。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571256/05cf9482-252c-9fd5-02ec-02b733bdd489.png" width="700" />

インストールが完了したら、スタートメニューを右クリックし、「コンピュータの管理」をクリックします。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571256/d25c6563-7892-1526-3d65-1af1f8e5f430.png" width="200" />

左ペインの「サービスとアプリケーション」の中の「サービス」を選択し、真ん中のエリアに表示された一覧から「OpenSSH SSH Server」を選択して、「サービスの開始」をクリックします。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571256/8ec5be98-2a4c-a28f-2d52-1cb1f4064dca.png" width="700" />

SSH接続する際にはMicrosoftアカウントではなくローカルアカウントが必要なので、追加します。
スタートメニューから「設定」→「アカウント」の順に選択し、「家族とその他のユーザー」を選択します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571256/1a57a313-d6d7-63e7-aa81-473d838d67a3.png" width="700" />

「他のユーザー」の「アカウントの追加」をクリックします。
ここからがちょっと厄介です。変なところばかりクリックします。

以下のような画面が表示されるので、「このユーザーのサインイン情報がありません」を選択します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571256/df8988e4-6d9f-6e41-e934-5b29bc090de5.png" width="500" />

次の画面では「Microsoftアカウントを持たないユーザーを追加する」をクリックします。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571256/cb39ea06-f5ef-018d-b83f-1076ed53b5b2.png" width="500" />

ユーザーIDとパスワード、秘密の質問を３つ（！）入力し、「次へ」をクリックします。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571256/e185dee1-3b98-79d5-53a3-8f943a50b246.png" width="500" />

これで、接続用のローカルアカウントが作成できました。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571256/c3aa8728-8154-7e18-273b-abae7d7f9d16.png" width="700" />

このアカウントで何でもできるようにしたいので、管理者権限に変更しておきましょう。
オプションのメニューを開いて「アカウントの種類の変更」をクリック

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571256/dd9c6b1a-eead-f236-cb67-92f060ae6db2.png" width="600" />

アカウントの種類で「管理者」を選んでOKとします。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571256/2a27cdea-732c-0dd6-7ef6-f77ded6159f7.png" width="400" />

なお、ローカルアカウントの作成直後だと、SSH接続しても以降の手順でインストールするwingetが実行できない事象が発生することがあるようです。
ローカルアカウント作成後はローカルアカウントで一度サインインをしておく必要があります。

また、幸運にも接続先PCがWindows Proでリモートデスクトップが使える場合は、リモートデスクトップ接続の設定をしておきましょう。
WindowsだとRDPの方がどう考えても色々便利ですので・・・。

https://support.microsoft.com/ja-jp/windows/%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88-%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9-5fe128d5-8fb1-7a23-3b8a-41e636865e8c

## remote.itに接続先PCを追加する
続いてremote.itの設定を進めていきます。
remote.itのデスクトップアプリを開き、メニューの＋ボタンから「This system」を選択します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571256/7b76113d-9aa4-a3c5-e2c2-0bf4d09e2061.png" width="700" />

少し待つと、接続可能なサービスの一覧が表示され、その中に「ssh」も入っていることが確認できると思います。
Windows Pro以上のエディションで、RDPが利用可能な場合はここにRDPも出てきます。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571256/fc18941e-ad1d-56a4-6e13-fe034ca20d13.png" width="700" />

名前の変更や使わないもののチェックを外すなどして、「REGISTER」をクリックすれば、登録完了です。

## おまけ）Wingetのインストール
IT環境メンテナンスのために、アプリケーションのインストールなどができる環境を用意しておいたほうが良いと思うので、Wingetをインストールしておきます。
WingetはWindows向けのPackage Managerです。
**※この操作は作成したローカルアカウントで実施してください**

WingetはMicrosoft Storeからインストールします。
スタートメニューの検索バーに「Microsoft Store」と入力し、Microsoft Storeを起動します。
さらに検索バーに「インストーラー」と入力して、「アプリインストーラー」を選択します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571256/d6ba464f-8cb5-6d52-d2e0-ed9e616dd81b.png" width="700" />

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571256/7b8e3bda-9a85-44eb-ad78-a4b116eeecbc.png" width="700" />

インストール後、「Windowsターミナル」を開き、「winget -v」を実行して結果が表示されればOKです。

```powershell
PS C:\Users\harer> winget -v
v1.2.11601
```

## iPhoneからアクセスしてアプリケーションを追加してみる
せっかくなので（？）、パソコンではなくスマホからアクセスしてアプリケーションを追加してみます。
まず、iPhoneにremote.itのアプリをインストールします。
App Storeで「remote.it」と検索すればすぐ出てきます。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571256/f07d5bee-ae3a-00b8-704a-156533940ab8.png" width="300" />

インストールしたアプリを起動したら、とりあえず登録したアカウント情報でサインインします。
サインインしたらこんな画面が出てくるかなと思います。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571256/410ef2f4-d9e1-2384-fa39-c81aadf8ea28.png" width="300" />

「1 Devices Online」をタップするとアクセス可能なデバイスの一覧が表示されます。
（１個しかないのでちょっとわかりにくいですが・・・）

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571256/e995a84a-6d3e-3eae-b0b2-8936249245d4.png" width="300" />

対象のデバイス名をタップするとどの接続方法を利用するかが選択できます。
今回は「SSH」を選択します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571256/a367e8f1-3a6b-2e64-4df7-0f42fc08f96b.png" width="300" />

ここまで来たらあとは「CONNECT」をタップすればOKです。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571256/44cf7d3d-c035-ee66-b888-c75471da778b.png" width="300" />

接続に成功すると接続用のアドレスが払い出されます。
このアドレスが知られてしまうと他人にもアクセス可能となってしまうので気をつけましょう。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571256/7e0b2bdb-f1b8-54a0-f82d-0e570b2c2c22.png" width="300" />

ちなみに、iPhoneの場合は標準だと「Termius」というSSHクライアントアプリが選ばれています。
特にこだわりがなければ、Termiusをインストールしておくと、「🚀LAUNCH」をタップするとそのままTermiusで接続してくれます。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571256/8ff3e99c-b4da-1b6c-b2d7-bc13399abf61.png" width="300" />

では、圧縮ファイルを送って解凍してもらうために、7-Zipをインストールするという想定で、以下のコマンドを打ち込んでみましょう。
（標準でZipは解凍できるので現実的にはあまり必要ありませんが・・・）

```powershell
Winget install 7zip.7zip --scope machine --source winget
```

Wingetなどのセットアップがちゃんと出来ていれば、正しくインストールされるはずです。
なお、--scopeを忘れると、ログインしているローカルアカウントにのみインストールされてしまうので注意しましょう。
また、一部のアプリケーションはmachineインストールに対応していないものがあります。
その場合は、以下のようにrunasコマンドを使って対象のユーザーアカウントに対してインストールが必要です。

```powershell
runas /user:target_user "winget install hogehoge"
```

ちなみに、7-Zipについては--sourceの指定をしないとエラーでインストールができませんでした。
その他のアプリケーションを入れる際も、うまく行かない場合はsourceの指定を追加してみてください。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571256/33710f29-b2bd-7f22-cba4-43a041554e66.png" width="300" />

上の方のエラーはsourceを指定しなかったためエラーになったものです。
sourceを指定したらうまくインストールができました。

## Macから接続してファイルをやり取りしてみる
続いて、Samba（Windowsファイルサーバー共有）を利用してファイルをやり取りしてみます。
ファイルのやり取りの前に、接続先PCに共有フォルダを作っておく必要があるので、作成します。

まず適当なドライブに適当なフォルダを作成しましょう。
今回はD:\test\sharedというフォルダを作成しました。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571256/32efec90-185a-ee60-1088-6f2d14a91676.png" width="500" />

作成したフォルダを右クリックして「プロパティ」を選択します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571256/bb1afa3e-5230-c10d-fdd2-cf6ac4d0c771.png" width="300" />

「共有」タブの「共有」ボタンをクリックします。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571256/49e27f3d-d6f2-a597-27b0-7d6b7b8c671d.png" width="400" />


入力欄に「everyone」と入力して追加し、「アクセス許可のレベル」を「読み取り/書き込み」にしておきます。
対象のユーザーがeveryoneではなく特定のユーザーに絞っておきましょう。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571256/eea871db-db6f-408c-4c63-6e473c47bca6.png" width="500" />

接続先の事前作業は以上です。
続いて、接続元のMacでの作業です。

接続元でもremote.itをインストールしてログインします。
（インストール手順は割愛します）

対象のノートPCのsmbを選びます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571256/767c37d3-a8d6-d140-2cfc-7fd3353fa2eb.png)

「ADD TO NETWORK」をクリックすると、接続できる状態になります。

![スクリーンショット 2022-07-07 23.34.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571256/2ad9f9b5-dc3f-0768-2ea9-ea7c5b3769c7.png)

ここで「LAUNCH」をクリックすると、Macのサーバへの接続ウインドウが開きます。
Windows側のユーザーIDとパスワードを入力して「接続」をクリックします。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571256/180e9c0b-00c3-e3a1-2d81-ed7d8dd87fc7.png" width="400" />

つづいて接続先の共有ドライブの選択画面が出てきます。
ここに先ほど作成した共有ドライブが表示されますので、それを選択して「OK」をクリックします。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571256/b7ccf50f-8dc5-6636-118a-c728ec814265.png" width="400" />

おめでとうございます！ドライブの共有ができました！！
あとは好きなようにファイルをコピーしてやれば、Windowsの共有フォルダの方にファイルが入っていることが確認できるはずです。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571256/7ca179c6-de69-1136-51f8-d91d11df4eae.png" width="600" />

# まとめ

remote.itを使って、WindowsにSSHでアクセスして操作したり、ファイルをやり取りする環境を簡単に整えることができました。
外部からのアクセスの環境を作るには、一昔前だとポート開放とかセキュリティの考慮とか、少しハードルが高い印象でしたが、remote.itを使えば、セキュアな接続が手軽に作れるのでいいですね。
また、昔はWindowsというとGUIで接続しないとアプリケーションのインストールなども辛い印象でしたが、SSHが公式で提供され、wingetも普及してきたため、CUIのみでも比較的操作がしやすくなったように思います。

実家（今回は義実家ですが）で使っているPCとなると、Windows Homeということが多いと思います。
そんな時でもある程度の遠隔操作が可能になれば、何か問題があっても一次調査は遠隔で実施して、必要な機材などを揃えてから対応に向かう、みたいな事もできるので、足を運ぶ回数を減らすことも可能です。
逆に義実家に行っているときに自宅のPCを遠隔で操作するようなことも可能ですから、「あのファイル持ってくればよかった・・・」みたいな対応もできちゃいますね。
ただ、ぜひともMicrosoftさんには、Windows Homeにもリモートデスクトップを利用可能にしてほしいところです・・・。

そんなわけで皆さんも、実家のITメンテナンスをやらなきゃいけなくなったとき、リモートでも気軽にできる環境をremote.itで整備してみてはいかがでしょうか。