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)を短くまとめる
普段使いの人は、上の「これから端末を増やすとき」の手順で十分です。







