tailscaleでリモート接続した

# Tailscaleを使ってMacBook AirからMac Miniにリモート接続してみた

## はじめに

こんにちは！この記事では、[Tailscale](https://tailscale.com/) という便利なツールを使って、手元のMacBook Airから自宅やオフィスにあるMac Miniにリモート接続し、Mac Mini上で開発作業を行う環境を構築する手順をご紹介します。

Mac Miniの方が実行が早く、常に電源に接続されていることから長時間プログラムを実行するときに理想的なためリモート接続することにしました。今回は[Visual Studio Code (VSCode)](https://code.visualstudio.com/) を使って接続します。

**この記事のゴール:** MacBook AirのVSCodeからMac MiniにSSH接続し、Mac Mini上でターミナル操作やプログラム実行ができるようになること。

**対象読者:**

* Macユーザーの方
* リモートワークや開発で複数のMacを使い分けている方
* TailscaleやVSCode Remote Developmentに興味がある方

## 環境

今回使用したデバイスは以下の通りです。

* **操作側:** MacBook Air (macOS)
* **接続先:** Mac Mini (macOS)

## 手順

### 1. Tailscaleのインストールとサインイン

まず、接続元（MacBook Air）と接続先（Mac Mini）の両方にTailscaleをインストールします。

1.  [Tailscaleの公式サイト](https://tailscale.com/download/mac) から、macOS版のTailscaleアプリをダウンロードし、インストールします。
2.  インストール後、両方のMacでTailscaleアプリを起動します。
3.  **必ず同じアカウント** (Google, Microsoft, GitHubなど) を使ってサインインしてください。

### 2. ネットワーク拡張機能の許可

macOSのセキュリティ機能により、Tailscaleがネットワーク接続を管理するために「ネットワーク拡張機能」の許可が必要です。

1.  Tailscaleアプリを起動すると、許可を求めるダイアログが表示される場合があります。システム環境設定（またはシステム設定）を開き、指示に従ってTailscaleのネットワーク拡張機能を許可してください。
2.  **特にMac Mini側での注意点:** Mac Miniに物理的にアクセスできない場合は、画面共有や他のリモートデスクトップツール(Google Remote Desktop等)を使って接続し、この許可操作を行う必要があります。一度許可すれば、次回以降は不要です。

### 3. VSCodeにTailscale拡張機能をインストール (MacBook Air側)

次に、操作を行うMacBook Air側のVSCodeにTailscaleの拡張機能をインストールします。これにより、VSCodeから簡単にTailscaleネットワーク上のデバイスに接続できるようになります。

1.  MacBook AirでVSCodeを開きます。
2.  左側のアクティビティバーから「拡張機能」アイコン (四角が組み合わさったようなアイコン) をクリックします。
3.  検索ボックスに `Tailscale` と入力し、公式のTailscale拡張機能を見つけて「インストール」ボタンをクリックします。

### 4. SSHキーペアの作成 (MacBook Air側)

安全なSSH接続のために、SSHキーペアを作成します。公開鍵認証を使うことで、パスワード入力なしで安全に接続できます。

1.  MacBook Airのターミナルを開きます。
2.  以下のコマンドを実行して、SSHキーペア（秘密鍵と公開鍵）を作成します。
    ```bash
    ssh-keygen -t rsa -b 4096
    ```
    * `-t rsa`: キーのタイプを指定 (RSAが一般的)
    * `-b 4096`: キーのビット長を指定 (より安全)
    * 実行すると、キーの保存場所 (通常は `~/.ssh/id_rsa`) とパスフレーズ（任意）の入力を求められます。特に変更なければEnterキーを押して進めます。**パスフレーズを設定すると、接続時に毎回入力が必要になりますが、セキュリティは向上します。**
3.  作成された公開鍵の内容を確認し、クリップボードにコピーします。
    ```bash
    cat ~/.ssh/id_rsa.pub
    ```
    表示された `ssh-rsa AAAA...` から始まる文字列全体をコピーしてください。

    **【重要】**
    * `~/.ssh/id_rsa` は **秘密鍵** です。絶対に他人に見せたり、ネットワーク上にアップロードしたりしないでください。大切に保管してください。
    * `~/.ssh/id_rsa.pub` は **公開鍵** です。接続先のサーバーに登録するために使います。

### 5. 接続先(Mac Mini)に公開鍵を登録

コピーした公開鍵を、接続先であるMac Miniに登録します。これにより、Mac MiniはMacBook AirからのSSH接続を信頼するようになります。

1.  Mac Miniのターミナルを開きます。(Tailscale経由でのSSH接続がまだできないため、直接操作するか、画面共有などで操作します。)
2.  `~/.ssh` ディレクトリが存在しない場合は作成し、適切なパーミッション（権限）を設定します。
    ```bash
    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
    ```
3.  `authorized_keys` というファイルを作成（または追記モードで開く）し、コピーしておいた **公開鍵** を貼り付けて保存します。
    ```bash
    nano ~/.ssh/authorized_keys
    ```
    * エディタ（ここでは `nano` を使っていますが、`vim` など他のエディタでも構いません）が開いたら、先ほどコピーした `ssh-rsa AAAA...` の公開鍵文字列を貼り付けます。
    * `nano` の場合、`Control + O` で保存、`Enter` を押し、`Control + X` で終了します。
4.  `authorized_keys` ファイルにも適切なパーミッションを設定します。
    ```bash
    chmod 600 ~/.ssh/authorized_keys
    ```
    これで、Mac Mini側でSSH接続を受け入れる準備ができました。

## 接続してみる！ (MacBook Air側)

いよいよ、MacBook AirのVSCodeからMac Miniに接続します。

1.  MacBook AirでVSCodeを開きます。
2.  左側のアクティビティバーに追加された「リモートエクスプローラー」アイコン (>< のようなアイコン) をクリックします。（もし見当たらなければ、Tailscale拡張機能のインストールやVSCodeの再起動を確認してください）
3.  上部のドロップダウンが「SSH Targets」になっていることを確認します。
4.  Tailscaleネットワーク上のデバイス一覧が表示されるはずです。接続したいMac Miniの名前が表示されていることを確認してください。
5.  Mac Miniの名前の横にある「+」（新しいウィンドウで接続）またはフォルダアイコン（現在のウィンドウで接続）をクリックします。
6.  初回接続時には、接続先のOSの種類（Linux, Windows, macOS）を聞かれる場合がありますので、「macOS」を選択します。
7.  フィンガープリントの確認ダイアログが表示されたら「Continue」をクリックします。

接続が成功すると、VSCodeの左下に緑色のステータスバーが表示され、「SSH: <Mac MiniのTailscale名>」のように表示されます。これで、VSCodeのターミナルを開けばMac Miniのシェルが、エクスプローラーを開けばMac Miniのファイルが表示され、直接編集やプログラム実行が可能になります！

## (おまけ) SSH接続が切れても処理を続けたい場合

SSH接続中に時間がかかる処理を実行していると、ネットワークが不安定になったり、MacBook Airを閉じたりした際に接続が切れて処理も中断してしまうことがあります。

このような場合は、`tmux` や `screen` といったターミナルマルチプレクサを使うのがおすすめです。これらは、SSHセッションが切断されてもサーバー上でセッション（とそこで動いているプロセス）を維持し、再接続後に元の状態に復帰できるツールです。

設定方法や使い方については、以下の記事などが参考になります。

* [【tmux】ssh接続が切れても処理を継続させる方法 - Qiita](https://qiita.com/mochi_2225/items/c463fa5f16618233aaca)

## まとめ

TailscaleとVSCode Remote - SSH拡張機能を使うことで、複雑なネットワーク設定やポート開放なしに、非常に簡単かつ安全にMac間のリモート接続環境を構築できました。

これにより、場所を選ばずにMac Miniのリソースを活用した開発が可能になります。ぜひ試してみてください！