アフィリエイト広告を利用しています

Tailscaleの【Tailnet Lock】を有効化した。Claude Codeと1ステップずつ、無効化キーだけは自分の手で

Tailscale の Tailnet Lock を有効化

Tailscaleの「**Tailnet Lock**」を、有効化しました。

Mac mini、MacBook Pro、iPad、iPhoneの4台です。

Claude Codeに手順を組み立ててもらい、1ステップずつ確認しながら進めました。

ただし、いちばん大事な鍵の操作だけは、AIに任せずに、自分のターミナルで実行しています。

作業が終わったあと、iPhoneとiPadから、Mac miniにちゃんとつながりました。

記事の最後に、同じ手順をAIと進めるためのプロンプトを載せています。

Tailnet Lockって、何?

Tailscaleは、自分の端末どうしを、暗号化したネットワークでつなぐサービスです。

以前、Mac miniからMacBook Proへファイルを送る仕組みを作ったときにも、使っています。

Mac miniからMacBook Proへ【Tailscale Taildrop】Claude Codeに「送って」と言うだけのファイル転送を作った

普段は、どの端末をネットワークに入れるかを、Tailscaleの管理サーバーが決めています。

Tailnet Lockを有効にすると、ここが変わります。

新しい端末は、自分の手元の「署名役」の端末が署名するまで、他の端末と通信できません。

なので、万が一、Tailscale側の管理サーバーが乗っ取られて、知らない端末が勝手に追加されても、僕の端末には、つながらない。

鍵を持っているのは、Tailscaleではなく、自分。

という仕組みです。

役割を決めた

4台の役割は、こうしました。

署名役(端末を承認する側)は、**Mac mini(M1 メモリ16GB / SSD 1TB)**と、**MacBook Pro(M4 Pro)**の2台。

署名される側は、**iPad Pro 11インチ(第3世代)**と、**iPhone 15 Pro Max**の2台。

署名役を2台にしたのは、片方が壊れたり、手元に無かったりしても、もう片方で新しい端末を承認できるようにするためです。

Claude Codeに渡した「進め方のルール」

Claude Codeには、手順の一覧と一緒に、進め方のルールを渡しました。

1ステップずつ進めて、毎回、僕の確認を待つこと。

MacBook Pro・iPad・iPhoneでの操作は、コマンドを出してもらって、僕が実行して結果を伝えること。

鍵の値を、推測で補わないこと。

そして、いちばん大事なのが、これ。

「tailscale lock init は、絶対にあなたが実行しないこと」

このコマンドを実行すると、Tailnet Lockを解除するための「**無効化シークレット**」が画面に出ます。

これは、Tailscale側には保存されません。

なくすと、ロックを解除できなくなります。

なので、AIの画面にも、会話の記録にも、残したくなかった。

Claude Codeには、コマンドを組み立てるところまでをやってもらい、実行は僕が自分のターミナルで、という分担にしました。

まず、2台の鍵を集める

最初に、Claude Codeが、Mac miniでTailscaleが動いているかと、4台がネットワークに見えているかを確かめてくれました。

Macのアプリ版のTailscaleは、ターミナルに tailscale コマンドが入っていないことがあります。

その場合は、/Applications/Tailscale.app/Contents/MacOS/Tailscale が、コマンドの本体です。

それと、前回と同じつまずきポイント。

Claude Codeのサンドボックス(安全のための囲い)の中では、Tailscaleのコマンドが「Failed to load preferences」で動きません。

なので、サンドボックスの外で実行してもらっています。

次に、署名役になる2台で、それぞれの鍵を表示します。

tailscale lock status

「tlpub:」から始まる長い文字列が、その端末の鍵です。

Mac miniの分は、Claude Codeが表示。

MacBook Proの分は、僕がMacBook Proで同じコマンドを実行して、出てきた鍵をコピーして、Claude Codeに貼り付けました。

手で打つと、1文字違うだけで別の鍵になってしまうので、必ずコピー&ペーストです。

有効化は、自分のターミナルで

2台の鍵がそろったら、Claude Codeが、有効化のコマンドを組み立ててくれました。

tailscale lock init --gen-disablements 10 --confirm tlpub:(Mac miniの鍵) tlpub:(MacBook Proの鍵)

「–gen-disablements 10」は、無効化シークレットを10個作る、という指定です。

これを、Mac miniのターミナルで、僕が実行。

出てきた無効化シークレット10個は、すぐに1Passwordに保存しました。

Claude Codeには、値は貼らずに「1Passwordに保存した」とだけ伝えています。

実行する前に、Claude Codeが、ひとつ注意をくれました。

Tailscaleの管理画面の「Device approval(端末の承認)」がオンになっていると、Tailnet Lockとは同時に使えない、ということ。

僕の場合は、そのまま通りました。

iPadとiPhoneは、署名いらずだった

有効化したあと、Claude Codeに状態を確かめてもらいました。

ロックは、有効。

署名役は、Mac miniとMacBook Proの2台。

で、ここで、ひとつ予定外のことがありました。

iPadとiPhoneは、このあと1台ずつ署名する予定だったのですが、すでに署名済みになっていました。

Tailnet Lockは、有効化した時点でネットワークにいる自分の端末を、まとめて自動で署名してくれるようです(公式のドキュメントにも、そう書かれていました)。

なので、iPadとiPhoneの署名作業は、なし。

共有してもらっていた端末が、締め出された

もうひとつ、予定外のことがありました。

別のアカウントから共有してもらっていた、もう1台のMac miniが、ロックに締め出されていたのです。

別のアカウントから共有された端末は、自動署名の対象外。

署名するまで、こちらの端末からは、つながりません。

実は、作業を始める前に、Claude Codeが「この5台目は、ロックを有効にしたら署名が必要になります」と、公式のドキュメントを調べて教えてくれていました。

なので、慌てずに済みました。

署名すれば、すぐに今までどおり使えます。

ただ、この端末は、これから使い方を変える予定なので、署名せずに保留にしています。

保留にしたことと、署名するときのコマンドは、Claude Codeに記録として残してもらいました。

iPhoneとiPadから、つながるか

最後に、本当につながるかの確認です。

まず、Mac miniから、3台へ「tailscale ping」。

tailscale ping 端末名

iPhone、iPad、MacBook Proの3台とも、返事が返ってきました。

Tailnet Lockが有効なときは、お互いの署名を確かめられないと、つながりません。

なので、返事が返ってくれば、署名がちゃんと効いている、ということです。

次に、iPhoneとiPadの側から。

「ファイル」アプリを開いて、右上の「…」から「サーバへ接続」。

「smb://Mac miniの端末名」を入れると、Mac miniのログイン画面が出ました。

iPhoneも、iPadも、OK。

ホッとしました。

これから端末を増やすとき

新しい端末を増やすときは、こうなります。

新しい端末で、Tailscaleにログインする(この時点では、まだ他の端末とつながりません)。

署名役のMac miniかMacBook Proで、tailscale lock status を実行して、締め出されている端末の「nodekey:」を確かめる。

その端末で間違いないかを、名前とIPアドレスで確かめてから、署名する。

tailscale lock sign nodekey:(新しい端末のnodekey)

もしロックをやめたくなったら、1Passwordに保存した無効化シークレットを1つ使って、解除します。

tailscale lock disable (無効化シークレット)

使ったシークレットは、それで使えなくなります。

10個あるので、しばらくは大丈夫です。

まとめ

Tailscaleの「Tailnet Lock」を、Mac mini・MacBook Pro・iPad・iPhoneの4台で有効化しました。

Claude Codeが、調べて、確かめて、コマンドを組み立てる。

僕は、鍵の操作だけを、自分の手でやる。

この分担が、ちょうどよかったです。

無効化シークレットは、なくすとロックを解除できなくなります。

1Passwordなどのパスワード管理アプリに、必ず保存してください。

同じ手順をAIと進めるプロンプト

署名役にする端末(Macなど)で、Claude CodeかCodexに、下のプロンプトを貼ってください。

前提は、すべての端末にTailscaleが入っていて、同じアカウントでログインしていること。

【 】の中だけ、自分の環境に書き換えます。

ネットワーク全体の設定を変える操作です。自己責任でお願いします。

無効化シークレットの保存先(1Passwordなど)を、先に用意しておいてください。

プロンプトを開く(タップで開きます。コピーして使えます)
Tailscale の Tailnet Lock を有効化したい。

【署名役の端末】このMac と 【もう1台の署名役(例: MacBook Pro)】
【署名される端末】【例: iPhone、iPad】

## 進め方のルール
- 1ステップずつ進め、各ステップの最後で私の確認を待つこと。勝手に次へ進まない
- このMac以外の端末で私が操作する手順は、コマンドや画面操作を提示して、私の結果報告を待つこと
- tailscale lock init は絶対にあなたが実行しないこと。無効化シークレットが出力されるため、コマンドだけ組み立てて提示し、私が自分のターミナルで実行する
- シークレットや鍵の値を推測で補わないこと。値は必ず私の報告かコマンド出力から取る
- 止める・消す・設定を変えるなど、元に戻しにくい操作の前は、必ず内容を説明して私の了承をもらう

## ステップ
1. 事前確認: tailscale version と tailscale status で、CLI が使えることと、全端末が見えていることを確かめる。PATH に tailscale が無ければ、Mac のアプリ版は /Applications/Tailscale.app/Contents/MacOS/Tailscale を使う。別のアカウントから共有されている端末があれば、ロック後にどうなるかを公式ドキュメントで調べて教える
2. このMacの鍵: tailscale lock status を実行し、tlpub 鍵を表示する
3. もう1台の署名役の鍵: 私がその端末で実行するコマンドを提示し、私が貼り付けた tlpub 鍵を受け取る
4. 有効化コマンドの作成: 管理画面の Device approval がオンなら先にオフにするよう伝えたうえで、tailscale lock init --gen-disablements 10 --confirm tlpub:... tlpub:... を組み立てて提示する。私が実行し、無効化シークレットを保存したと報告するまで待つ(シークレットの値は会話に貼らせない)
5. 有効化の確認: tailscale lock status で、ロックが有効で、2台が信頼済みの署名役になっていることを確かめる
6. 未署名の端末: 締め出されている端末があれば nodekey を示し、どの端末か私に確認してから tailscale lock sign nodekey:... を1台ずつ実行する
7. 最終確認: tailscale ping で各端末に届くかを確かめ、スマホやタブレットからこのMacに接続できるかを私に試してもらう
8. まとめ: 端末を追加するときの手順と、ロックを解除する方法(tailscale lock disable)を短くまとめる

普段使いの人は、上の「これから端末を増やすとき」の手順で十分です。

この記事を書いた人

大東 信仁

カンパチが好きです。

プロフィールはこちら

10月14日開催 参加者募集中
(画像をタップ→詳細へ)

ミッションナビゲート モニター
(画像をタップ→詳細へ)

広告