TailscaleでMac miniをリモート操作できるようにする
自宅のMac miniに外出先からアクセスしたい。VPNを張ればいいが、ポート開放やダイナミックDNSの管理は面倒だし、セキュリティリスクもある。Tailscaleを使えば、WireGuardベースのメッシュVPNが数分で構築でき、NATの内側にあるマシンにも直接アクセスできる。
この記事では、Mac mini(Apple Silicon / macOS)にTailscale経由でSSHとRemote Desktop(VNC/ARD)接続できるようにするまでの手順をまとめる。
前提
- Mac mini(M4, macOS 26.x Tahoe)
- Tailscaleアカウント作成済み
- 接続元デバイス(iPhone、別のMacなど)にもTailscaleインストール済み
1. Tailscaleのインストールと接続
インストール方法の選択
Tailscale for macOSには2つのビルドがある。
| App Store版 | スタンドアロン版 | |
|---|---|---|
| インストール | Mac App Store | tailscale.com/download から直接DL |
| 自動更新 | App Store経由 | アプリ内自動更新 |
| サンドボックス | あり(macOS制約) | なし |
| Tailscale SSH | 使えない | 使える |
| Exit Node | 使える | 使える |
App Store版はサンドボックスで動作するため、Tailscale SSHサーバーが起動できない。 Tailscale SSHを使いたい場合は、スタンドアロン版をtailscale.com/downloadからダウンロードしてインストールする。
App Store版からスタンドアロン版に切り替える場合は、先にApp Store版をアンインストールしてからスタンドアロン版をインストールする。Tailscaleアカウントに再ログインすれば設定は引き継がれる。
注意: Homebrew(
brew install --cask tailscale)でもスタンドアロン版をインストールできる。
接続
メニューバーのTailscaleアイコンから「Log in」→ ブラウザで認証。
CLIで確認:
tailscale status
自分のTailscale IPとネットワーク内の他デバイスが表示されれば接続完了。
2. SSHを有効化する
macOSのSSH(リモートログイン)はデフォルトで無効。システム設定から有効にする。
GUIで設定
- システム設定 → 一般 → 共有
- リモートログイン をオンにする
- 「フルディスクアクセスのあるユーザのみ」または「すべてのユーザ」を選択
CLIで設定
sudo systemsetup -setremotelogin on
Full Disk Access privilegesエラーが出る場合: ターミナルアプリにフルディスクアクセス権限が必要。システム設定 → プライバシーとセキュリティ → フルディスクアクセスで使用中のターミナルアプリを追加し、ターミナルを再起動してから再実行する。面倒ならGUIから設定するほうが早い。
接続テスト
別のTailscaleデバイスから:
# Tailscale IPで接続
ssh ユーザー名@100.xx.xx.xx
# MagicDNSが有効なら、マシン名でも接続可能
ssh ユーザー名@chibihammac-mini
3. Tailscale SSHを使う(オプション)
Tailscaleには組み込みのSSH機能がある。macOSのSSHデーモンを使わず、Tailscale自体がSSH接続を処理する。メリット:
- 鍵管理が不要: TailscaleのIDで認証される
- ACLで制御: Tailscale管理画面からアクセス制御できる
- SSHデーモン不要: OS側のsshd設定を気にしなくていい
macOSでの制約
macOSのGUI版Tailscale(App Store版・スタンドアロン版ともに)はcom.apple.security.app-sandboxエンタイトルメントでサンドボックス化されており、Tailscale SSHサーバーが動作しない。 tailscale set --sshを実行すると以下のエラーになる:
The Tailscale SSH server does not run in sandboxed Tailscale GUI builds.
Tailscale SSHをmacOSで使うには、GUIなしのCLIデーモン版(brew install tailscaleで入るtailscaled)が必要。ただしGUI版との共存はできず、デーモンの起動管理も自分で行う必要がある。
推奨: macOSではTailscale SSHを使わず、セクション2のmacOS標準SSH(リモートログイン)をTailscaleネットワーク経由で使うのが最も確実。
有効化(CLIデーモン版の場合)
GUI版をアンインストールし、CLIデーモン版をインストールした上で、2つの設定が必要。
1. 接続先マシン(Mac mini)でSSHを有効化:
tailscale set --ssh
注意: このコマンドを実行すると、既存のTailscale IP経由のSSH接続が切断される。
2. 管理コンソールでACLポリシーにSSHルールを追加:
管理コンソールの Access Controls(https://login.tailscale.com/admin/acls)でポリシーファイルを編集:
{
"ssh": [
{
"action": "accept",
"src": ["autogroup:members"],
"dst": ["autogroup:self"],
"users": ["autogroup:nonroot"]
}
]
}
コンソールのマシン設定画面にSSH有効化のトグルはない。CLIとACLポリシーの両方を設定する必要がある。
接続
ssh chibihammac-mini
# ユーザー名もパスワードも不要
注意: Tailscale SSHはmacOSではベータ扱いの場合がある。安定性を重視するなら、通常のSSH + Tailscaleネットワーク経由が確実。
4. Remote Desktop(画面共有)を有効化する
Mac miniをGUIで操作したい場合、macOS標準の画面共有(VNC/ARD)を使う。
GUIで設定
- システム設定 → 一般 → 共有
- 画面共有 をオンにする
- アクセスを許可するユーザーを設定
CLIで設定
# 画面共有を有効化
sudo defaults write /var/db/launchd.db/com.apple.launchd/overrides.plist com.apple.screensharing -dict Disabled -bool false
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.screensharing.plist
接続方法
macOSから(推奨)
Finderのメニューから 移動 → サーバへ接続(⌘K):
vnc://100.xx.xx.xx
# または MagicDNS名
vnc://chibihammac-mini
あるいはSpotlightで「画面共有」を検索してアプリを起動。
iPhoneから
- Screens 5(有料、高品質)
- Microsoft Remote Desktop(無料)
VNC接続先にTailscale IPまたはMagicDNS名を指定する。
Windowsから
- RealVNC Viewer(無料)
- 接続先:
100.xx.xx.xx:5900
5. セキュリティの考慮
Tailscaleだけでは守れないもの
Tailscaleはオーバーレイネットワークを追加するだけで、既存のネットワークインターフェースには何もしない。systemsetup -setremotelogin onでSSHを有効にすると、sshdは全インターフェースの22番ポートで待ち受ける。画面共有(VNC)も同様。
| 経路 | SSHアクセス |
|---|---|
| Tailscale IP(100.x.x.x) | 可能(意図通り) |
| ローカルLAN IP(192.168.x.x) | 可能(同じルーター配下のデバイス) |
| インターネット(ルーターがポート開放していれば) | 可能 |
つまりTailscaleを入れただけでは、ローカルネットワーク上の他デバイスからのSSH/VNCアクセスはブロックされない。ゼロトラストネットワークの考え方を徹底するなら、ファイアウォールでTailscaleインターフェース以外からのアクセスを遮断する必要がある。
pfでTailscale経由のみに制限する
macOSのpf(Packet Filter)を使えば、Tailscaleインターフェース以外からのSSH/VNCをブロックできる。
まずTailscaleが使っているインターフェース名を確認:
tailscale status --json | python3 -c "import sys,json; print(json.load(sys.stdin).get('TUN',''))"
# 例: utun4
/etc/pf.confにルールを追加:
# Tailscaleインターフェース以外からのSSH/VNCをブロック
block in quick on ! utun4 proto tcp from any to any port 22
block in quick on ! utun4 proto tcp from any to any port 5900
pfを有効化・リロード:
sudo pfctl -e # pfを有効化
sudo pfctl -f /etc/pf.conf # ルールをリロード
注意: Tailscaleのインターフェース名(utun4等)は再起動やTailscale再接続で変わる可能性がある。固定したい場合はlaunchdスクリプトで動的に設定する必要がある。
SSH鍵認証のみに制限する
パスワード認証を無効にして鍵認証のみにすれば、総当たり攻撃のリスクをなくせる:
# /etc/ssh/sshd_config を編集
PasswordAuthentication no
KbdInteractiveAuthentication no
設定を反映:
sudo launchctl stop com.openssh.sshd
sudo launchctl start com.openssh.sshd
Tailscale ACL
管理コンソールのACLで、Tailscaleネットワーク内でのアクセスも制御できる:
{
"acls": [
{
"action": "accept",
"src": ["chibiham@github"],
"dst": ["chibihammac-mini:22,5900"]
}
]
}
この設定なら、自分のアカウントからMac miniのSSH(22)と画面共有(5900)のみ許可される。
セキュリティチェックリスト
6. 便利な追加設定
MagicDNS
Tailscale管理コンソールの DNS タブでMagicDNSを有効にしておくと、IPアドレスの代わりにマシン名で接続できる。
ssh chibihammac-mini
# instead of
ssh 100.77.108.34
Exit Node
Mac miniをExit Nodeとして設定すれば、外出先から自宅ネットワーク経由でインターネットに出ることもできる。
# Mac mini側
sudo tailscale up --advertise-exit-node
# 接続元側
sudo tailscale up --exit-node=chibihammac-mini
Funnel(外部公開)
Tailscale Funnelを使えば、Mac miniで動かしているWebサービスをインターネットに公開することもできる(ポート開放不要)。
tailscale funnel 8080
まとめ
| 機能 | 方法 | ポート |
|---|---|---|
| SSH | macOSリモートログイン or Tailscale SSH | 22 |
| 画面共有 | macOS画面共有(VNC/ARD) | 5900 |
| ファイル転送 | scp / sftp over Tailscale | 22 |
Tailscaleの導入により、従来のVPN構築で必要だったポート転送・DDNS・証明書管理がすべて不要になる。WireGuardベースなのでオーバーヘッドも小さく、P2P接続が確立すればレイテンシもほぼゼロに近い。
自宅サーバーを運用するなら、Tailscaleはインフラ層の複雑さを劇的に減らしてくれる最初の一手だ。