CC for Biz
2026/10/21Claude Code
導入・運用セキュリティ

Tailscale SSHとは|通常のSSHとの違いと設定方法

Tailscale SSHとは|通常のSSHとの違いと設定方法

「Tailscale SSHという機能があるらしいが、普通のSSHと何が違うのか」「有効にすると今のSSH鍵や設定はどうなるのか」——Tailscaleを入れて外からサーバーに入れるようになったあと、多くの人がこの疑問にぶつかります。

結論から言うと、Tailscale SSHはSSHの「誰が入ってよいか」の判断と鍵の配布を、Tailscaleのログインと管理画面のポリシーに任せる機能です。接続先で tailscale set --ssh を1回実行し、ポリシーファイルに許可のルールを書けば、SSH鍵を配らずに入れます。ただし接続先(サーバー側)になれるのはLinuxと、macOSでは一部の版だけで、Macの通常のアプリ版はサーバーになれません。

株式会社Fyveは、自宅に置いたMac miniをAIの自動化サーバーとして毎日動かし、手元のMacから外出先でもTailscale経由でSSHしています。ただ、そのMac miniではTailscale SSHを使わず、macOS標準のSSHをTailscaleの上で使っています。本記事では、2026年10月21日時点の公式ドキュメントをもとにTailscale SSHの仕組みと設定方法を整理し、私たちがあえて使っていない理由まで含めて、どちらを選ぶべきかの判断材料をお伝えします。

Tailscale SSHとは:鍵の管理をTailscaleに任せるSSH

まず、名前が似ている2つの使い方を分けておきます。混同されやすいのですが、意味がまったく違います。

  • 通常のSSHをTailscaleの上で使う:接続先のOSのSSHサーバー(sshd)がそのまま動き、認証はこれまでどおりSSH鍵やパスワード。Tailscaleは「外から届く道」だけを用意する
  • Tailscale SSH:Tailscale自身がSSHサーバーとして待ち受け、「誰がどのユーザーで入れるか」をTailscaleのポリシーで決める。SSH鍵の配布は不要

Tailscaleを入れただけの状態は前者です。ssh コマンドの宛先をTailscaleのホスト名にしても、認証の仕組みは何も変わりません。Tailscale SSHは、これに加えて自分で有効にする別の機能です。

仕組み:Tailscaleのログインがそのまま本人確認になる

公式ドキュメント(Tailscale SSH)によると、仕組みは次のとおりです。

  • 本人確認:接続はまずTailscaleの端末ごとの鍵(ノードキー)でWireGuard暗号化されます。この時点で接続先は「誰の、どの端末から来たか」を知っているため、SSHの段階では追加の鍵やパスワードを求めません(SSHの認証方式としては none を使う)
  • 許可の判断:tailnet(Tailscaleで作る自分たちのネットワーク)のポリシーファイルで決めます。通信を許すルールと、SSHを許すルールの両方が揃って初めて入れます
  • 暗号化:WireGuardの暗号化の上に、SSH自体の暗号化が重なります
  • ホスト鍵:接続先のホスト鍵もTailscaleが作り、公開鍵の側を管理サーバー経由で配るため、初回接続時の「このホストを信頼しますか」の確認が要りません
  • 取り消し:ポリシーを変えて誰かの権限を外すと、数秒で反映され、接続中のセッションも「Access revoked」と表示されて切れます

退職者や契約が終わった外部の協力者のSSH鍵を、サーバーごとに探して消す作業がなくなる、というのがいちばんの利点です。

既存のSSH設定はどうなるか

有効にしても、接続先の /etc/ssh/sshd_config や ~/.ssh/authorized_keys は書き換えられません。Tailscale SSHが横取りするのはそのマシンのTailscaleのIPアドレスに届いた22番ポートの通信だけで、同じLANからの接続など、Tailscaleを通らないSSHはこれまでどおりOSのsshdが受けます。

逆に言うと、Tailscale SSHを有効にしても、OS側のSSHサーバーが外に開いている状態は何も変わりません。この点は後半の「私たちが使っていない理由」で、実際に起きたことと一緒に説明します。

通常のSSH over Tailscaleとの違い(比較表)

項目

通常のSSH+Tailscale

Tailscale SSH

SSHサーバー

OSのsshd

Tailscale(tailscaled)

認証

SSH鍵・パスワード

Tailscaleのログイン(SSO)

誰が入れるか

各サーバーの authorized_keys

管理画面のポリシーファイル

権限の取り消し

サーバーごとに鍵を削除

ポリシー変更で数秒

ポート

変更できる

22番固定

接続先になれる端末

sshdが動けば何でも

Linux/macOSは一部の版のみ

再認証の強制(check)

なし

あり

通常のSSH+TailscaleとTailscale SSHの違い(認証・取り消し・ポート・接続先)

Tailscale SSHが使える端末と料金(2026年10月21日時点)

接続先(サーバー側)になれるのはLinuxとmacOSの一部の版

公式ドキュメントに書かれている、Tailscale SSHのサーバー側の対応は次のとおりです。

  • Linux
  • macOS(ただし、オープンソース版の tailscale + tailscaled のコマンドライン版のみ)
  • Tailscale v1.24以降が必要
  • SynologyとQNAPのNASでは使えない

一方、接続元(クライアント側)は、Tailscaleが動いている端末ならOSを問いません。WindowsやMac、スマートフォンからでも、普段のSSHクライアントで接続できます。

Macの3つの版と、Tailscale SSHへの対応

Macでつまずきやすいのがここです。TailscaleのmacOS版には3種類あり、公式ドキュメントのmacOS版の比較表では、Tailscale SSHのサーバーになれるのはオープンソース版の tailscaled だけとされています。

版

入手方法

SSHサーバー

tailscale ssh コマンド

ログイン前から起動

Mac App Store版

App Store(Apple ID必須)

不可

不可(通常の ssh を使う)

不可

Standalone版(公式推奨)

公式サイトのpkg

不可

可

不可

オープンソース版 tailscaled

Goでビルド or Homebrewのformula

可

可

可

メニューバーに出る普通のアプリ(App Store版とStandalone版)は、どちらもSSHの接続元にはなれても、接続先にはなれません。MacをTailscale SSHで受ける側にしたい場合は、GUIのないコマンドライン版に入れ替える必要があります。公式は、App Store版とStandalone版を同じMacに入れるとTailscaleの拡張機能が起動しなくなることがあるとも注意しています。入れ替えるときは片方を消してからにしてください。

オープンソース版の入れ方は、GitHubのwiki(Tailscaled on macOS)に2通り載っています。

# Homebrewで入れる場合
brew install --formula tailscale
sudo brew services start tailscale
sudo tailscale up

# Goでビルドする場合(起動時に立ち上がるlaunchdサービスとして登録)
go install tailscale.com/cmd/tailscale{,d}@main
sudo $HOME/go/bin/tailscaled install-system-daemon

同じwikiには、macOSのtailscaledはGUI版より検証が少ないこと、MagicDNSを使うにはDNSサーバー 100.100.100.100 を自分で設定する必要があることも書かれています。自動更新もありません。手軽さと引き換えになる点は知っておくべきです。

料金:全プランで使えるが、Personalには台数の上限がある

公式の料金ページ(2026年10月21日時点)では、Tailscale SSHは無料のPersonalを含む全プランで使えるとされています。整理すると次のとおりです。

  • Personal(無料):比較表の「Basic Tailscale SSH」に「Up to 5 hosts」とあり、基本機能は5台まで
  • Standard(1ユーザーあたり月8ドル):Personalの機能を引き継ぐ。SSHについての追加項目は記載なし
  • Premium(1ユーザーあたり月18ドル):「Advanced Tailscale SSH」。check(再認証)の間隔を変えられるのはPremium以上
  • SSHの操作記録(セッション録画):プランの機能ではなく、別売りの特権アクセス管理の拡張として営業窓口経由で案内されている

価格はいずれも税別・月払いの表示で、契約前には公式の料金ページで最新の条件を確認してください。なお、Personalは非商用が前提のプランです。業務で使う場合のプランの選び方と席の数え方は、別の記事で詳しく整理しています。

Tailscaleの料金|無料でどこまで使えるか
Claude CodeTailscaleの料金|無料でどこまで使えるか
この記事を読んでいるあなたへ無料プレゼントClaudeのこの5つの設定、今すぐ見直した方がいい共有・学習・入力・権限・委任。事故が起きるのはこの5つだけ(全28ページ)
見落としやすい共有リストは3つある(3つ目は画面の下)学習をオフにしても残る、公式の例外条項権限モード6つの違いと、Shift+Tabでの切り替え方
中身のプレビューを見る ↓登録すると、過去の特典もまとめて受け取れます(PDF 18点・合計468ページ + すぐ使えるzip素材 3点)

Tailscale SSHの設定方法(3ステップ)

公式ドキュメントの手順は3つです。接続先がLinuxのサーバーか、macOSのtailscaled版である前提で進めます。

ステップ1:接続先で tailscale set --ssh を実行する

sudo tailscale set --ssh

これで接続先にTailscale SSH用のホスト鍵が作られ、TailscaleのIPアドレスに届く22番ポートの通信をTailscaleが受けるようになります。実行は1台につき1回で済みます。

注意点が1つあります。実行した瞬間、そのマシンのTailscaleのIPアドレス宛てにつないでいる既存のSSHセッションは固まります。リモートから作業しているなら、LAN側など別の経路を確保してから実行してください。

ステップ2:ポリシーファイルにSSHのルールを書く

管理画面のポリシーファイル(Access controls)には ssh という節があります。ポリシーを一度も編集していない場合の既定値は次のとおりです。

"ssh": [
  {
    "action": "check",
    "src": ["autogroup:member"],
    "dst": ["autogroup:self"],
    "users": ["autogroup:nonroot", "root"]
  }
]

読み方は「tailnetのメンバー(src)が、自分の端末(dst)に、root以外の任意のユーザーかrootとして(users)、再認証つき(check)で入れる」です。各項目の意味は次のとおりです。

  • action:accept(Tailscaleにログイン済みならそのまま通す)か check(一定時間ごとにログインし直させる)
  • src:接続元。ユーザー、グループ、タグなど
  • dst:接続先。autogroup:self は「接続元のユーザー自身の端末」
  • users:接続先のどのOSユーザーとして入れるか。autogroup:nonroot はroot以外の全員、localpart:*@ドメイン とすればメールアドレスの@より前と同じ名前のユーザーに限れる

🔴 公式が明記している落とし穴があります。dstを autogroup:self からタグ付きのサーバーなどに変えたら、usersから autogroup:nonroot を外してください。そのままにすると、srcで許した人全員が、接続先のroot以外のどのユーザーにもなれてしまいます。共有サーバーでは、入ってよいユーザー名を明示的に列挙するのが安全です。

また、ssh節だけでは足りません。接続元から接続先への通信そのものを許すルール(ネットワークのルール)も必要です。片方だけ書いて「つながらない」となるのが典型的なつまずきです。

ステップ3:接続する

ssh ユーザー名@ホスト名
# TailscaleのIPアドレスでも可
ssh ユーザー名@100.x.x.x

普段の ssh コマンドのままで入れます。鍵ファイルの指定は要りません。

やめたいとき・鍵を作り直したいとき

# Tailscale SSHを無効にする(先に別の入り方を確保しておく)
sudo tailscale set --ssh=false

# 端末の鍵とSSHのホスト鍵を作り直す
sudo tailscale up --ssh --force-reauth

# tailnetからの接続をすべて拒否する(Tailscale SSHも含む)
sudo tailscale set --shields-up

accept と check の違い:再認証をどこまで求めるか

Tailscale SSHならではの機能が check です。accept はTailscaleにログイン済みの端末をそのまま通しますが、check は一定時間ごとに、Google・Microsoftなどのログインをもう一度求めます。

  • 既定の間隔:12時間。checkPeriod で1分〜168時間、または always(毎回)を指定できる
  • 間隔の変更:料金ページによると、Premium以上で可能。check自体はPersonalでも使える
  • 優先順位:同じ接続にcheckとacceptの両方が当てはまる場合、checkが優先される
  • 対象外:タグ付きの端末を接続元とするルールにはcheckを使えない。Tailscale SSH以外の通常のSSHや他の通信にも効かない

注意したいのは自動化との相性です。公式は、always にするとAnsibleのように短時間に何本も接続するツールの邪魔になりうると書いています。checkは途中でブラウザでのログインを求めるため、人が画面の前にいない自動処理からの接続には向きません。サーバー同士の自動接続は、タグ付きの端末からのacceptルールとして分けて書くのが現実的です。

逆に、人が手で入るサーバーなら、checkは「端末を置き忘れても、間隔が過ぎればログインし直さないかぎり入れない」という保険になります。ノートPCを持ち歩く人が多いチームほど効く設定です。

私たちがMac miniでTailscale SSHを使っていない理由

ここからは、私たちの実際の構成です。私たちは自宅のMac miniで、launchdを使ってClaude Codeを1日に何度も無人で起動し、記事の下書きや投稿の準備を自動で回しています。手元のMacからは、外出先でもTailscale経由でこのMac miniにSSHで入ります。

Tailscale使い方|Mac miniへ外出先から安全に接続
Claude CodeTailscale使い方|Mac miniへ外出先から安全に接続

入り方は通常のSSH+Tailscaleです。Mac miniはmacOS標準の「リモートログイン」(sshd)を鍵認証で受け、手元のMacの ~/.ssh/config では接続先をTailscaleのホスト名(MagicDNSの名前)にしています。これでLANにいても外出先でも ssh の一言で入れます。Tailscale SSHを使っていない理由は3つです。

理由1:入れているのがStandalone版で、そもそもサーバーになれない

Mac miniには、Homebrewを入れない最小構成のまま、公式サイトのpkg(Standalone版)でTailscaleを入れました。前述の比較表のとおり、この版はTailscale SSHのサーバーになれません。使うにはオープンソース版のtailscaledに入れ替える必要があります。

入れ替えは可能ですが、そのためにHomebrewかGoをサーバーに足すことになり、GUIも自動更新もなくなり、MagicDNSのDNS設定も自分で持つことになります。私たちはサーバーに入れる道具をできるだけ増やさない方針で運用しているので、1人が自分の端末から入るだけの用途には見合わないと判断しました。

理由2:利用者が1人なので、鍵の管理が負担になっていない

Tailscale SSHのいちばんの価値は、人が増えたり減ったりするときの鍵の配布と取り消しです。私たちのMac miniに入るのは手元のMac 1台だけで、authorized_keys の行も1つです。管理する鍵がほぼ無い状態では、仕組みを替える理由が弱くなります。

逆に、外部の協力者やチームのメンバーが複数のLinuxサーバーに入る体制なら、迷わずTailscale SSHを検討します。判断の分かれ目は「OS」と「入る人数」です。

理由3:Tailscale SSHを入れても、OS側のSSHが外に開いているのは変わらない

これは実際に起きたことから得た教訓です。Tailscaleを入れて安心していたあと、外からこのMac miniに届く経路を調べたところ、SSH(22番)と画面共有(5900番)が、Tailscaleを通らずにIPv6でインターネットから直接届く状態になっていました。原因は、IPv4ならルーターのアドレス変換が防壁になるのに、IPv6には同じ防壁が無かったことです。sshdのログに攻撃の痕跡はありませんでしたが、IPv6のアドレス割り当てを同じネットワーク内だけで使える範囲に絞って塞ぎました。

Claude Codeサーバーは安全か|IPv6露出を実測した話
Claude CodeClaude Codeサーバーは安全か|IPv6露出を実測した話

ここで大事なのは、仮にこのときTailscale SSHを使っていても、この穴は塞がらなかったということです。公式ドキュメントのとおり、Tailscale SSHが受けるのはTailscaleのIPアドレスに届いた通信だけで、それ以外の22番はOSのsshdが受け続けます。「Tailscale SSHにしたから安全」ではなく、OS側のSSHサーバーを止めるか、外から届かないようにするかは別の作業です。Tailscale SSHに一本化するなら、OSのリモートログインを切る判断までセットで行ってください。

Tailscale SSHを使うか決める3つの質問

Tailscale SSHが向かない場面

公式ドキュメントは、Tailscale SSHの制限もはっきり書いています。導入前に次の項目に当てはまらないか確認してください。

  • ポートを22番以外にしたい:変更できません。別のポートで受けたいなら、通常のSSHをTailscaleの上で使います
  • 接続元のマシンを複数人で共有している:Tailscale SSHは接続元に鍵を求めないため、接続元のマシンにログインできるOSユーザーなら誰でも接続できます。制限できるのは接続先側のポリシーだけです
  • 信頼できないプログラムを動かすマシン:同じ理由で、接続元で動く他のプログラムからも接続できてしまいます。公式は対策として、checkの間隔を always にする方法を挙げています
  • authorized_keys で実行できるコマンドを制限している:その種の鍵ごとの細かい制限は、Tailscale SSHには移せません
  • Tailscaleを入れていない機器:サブネットルーターの奥にある、Tailscaleが動いていない機器にはTailscale SSHで入れません
  • 接続中のセッションを切りたくない:tailscaledを再起動すると(更新時を含む)、Tailscale SSHのセッションは切れます

また、Tailscale SSHは接続先のホスト鍵をホスト名で管理するため、DNS(MagicDNS)の不調で接続エラーになることがあります。つながらないときは、まず tailscale status でホスト名とIPアドレスが見えているかを確かめるのが早道です。

よくある質問

Tailscale SSHを有効にすると、今使っているSSH鍵は使えなくなりますか

使えます。sshd_config と authorized_keys は書き換えられず、Tailscaleを通らない接続はこれまでどおりOSのsshdが受けます。ただしTailscaleのIPアドレス宛ての22番はTailscale SSHが受けるようになるため、Tailscale経由で従来の鍵認証を使いたい場合は、Tailscale SSHを有効にしない選択になります。

WindowsやiPhoneから接続できますか

接続元はTailscaleが動いていればOSを問いません。普段使っているSSHクライアントから、接続先のTailscaleのホスト名かIPアドレスを指定します。接続先(サーバー側)になれないのはWindowsと、Macの通常のアプリ版です。

Macで tailscale ssh というコマンドを見かけましたが、何が違いますか

tailscale ssh は接続元で使うコマンドです。Standalone版とtailscaled版は対応していますが、App Store版は対応しておらず、通常の ssh コマンドを使うよう案内されています。接続先がTailscale SSHのサーバーかどうかとは別の話です。

無料のPersonalプランで試せますか

試せます。料金ページではPersonalにも基本のTailscale SSHが含まれ、5台までとされています(2026年10月21日時点)。ただしPersonalは非商用が前提なので、業務で使うなら有料プランで見積もってください。

まとめ:選ぶ基準は「接続先のOS」と「入る人数」

要点を整理します。

  • Tailscale SSHは、SSHの認証と許可をTailscaleのログインとポリシーファイルに任せる機能。鍵を配らずに済み、権限は数秒で取り消せる
  • 設定は、接続先で tailscale set --ssh、ポリシーファイルにssh節と通信のルール、あとは普段の ssh で接続、の3ステップ
  • 接続先になれるのはLinuxとmacOSのtailscaled版だけ。Macの通常のアプリ(App Store版・Standalone版)はサーバーになれない
  • dstをタグなどに変えたら、usersから autogroup:nonroot を外す。checkは人が手で入る接続に向き、自動処理には向かない
  • Tailscale SSHを入れても、OS側のSSHサーバーが外に開いている状態は変わらない。塞ぐのは別の作業
  • Linuxサーバーに複数人が入るならTailscale SSH。Macのアプリ版のサーバーに1人で入るなら、通常のSSH+Tailscaleで十分

私たちは今のところ、1人で入るMac miniには通常のSSH+Tailscaleを使い続けています。外部の協力者と一緒にLinuxのサーバーを触る場面が出てきたら、そのときはTailscale SSHとcheckの組み合わせを最初に検討するつもりです。株式会社Fyveでは、こうした自社の運用で確かめたことを、これからも具体的な手順と判断の理由つきで共有していきます。

この記事を読んでいるあなたへ無料プレゼント

Claudeのこの5つの設定、今すぐ見直した方がいい

共有・学習・入力・権限・委任。事故が起きるのはこの5つだけ(全28ページ)

2026年7月、Claudeの共有チャットがGoogle検索から読める状態になっていました。原因は設定そのものではなく、自分が過去に共有したものを覚えていないことでした。共有リンクの棚卸しから、学習をオフにしても残る例外条項、Claude Codeの権限モードまで、今日30分で確認できる形にまとめています。

  • 見落としやすい共有リストは3つある(3つ目は画面の下)
  • 学習をオフにしても残る、公式の例外条項
  • 権限モード6つの違いと、Shift+Tabでの切り替え方
  • 私が実際に禁止しているコマンド23行を全文公開

メールアドレス登録で他にも様々な資料を閲覧できます

仕事でAIを使う人が「絶対に」知っておくべき Claude Codeスキル TOP10「Sonnet 5.5」を、実務で比べてみた。Codexを使い始める前に、「絶対に」見直してほしい5つのこと「Opus 5.5」を、実務で比べてみた。Jevで得する仕事、損する仕事Astra と Fable 5.1、ベンチマークでは分からない「使い分け」。Fable 5.1、賢さは「どこ」に出たか。Workにしかできない仕事は、2つだけその太字、本物ですか+9

PDF 18点・合計468ページ + すぐ使えるzip素材 3点

どれも登録後の受け取りページから、まとめてダウンロードできます。

毎週配信の無料ニュースレター「AIネイティブ超研究」の購読特典です。メール登録後すぐ、受け取りページのご案内が届きます。そこにはこの資料に加えて、過去の特典もすべてまとめて置いてあります。あわせて、AI活用に関するお知らせやお役に立てそうなご案内をお送りすることがあります。解除はいつでも1クリック。

← 記事一覧に戻る

御社の業務に合わせたClaude Code導入支援

「AIツールを導入したが、現場で使われない」を終わらせる。
業務課題のヒアリングから設計、ハンズオン実践、運用定着まで一貫して支援します。

無料AI活用診断を受ける料金とサービス一覧を見る →
© 2025 Fyve Inc. All rights reserved.