0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

tmate.ioが終了したので代替を比較した。GitHub ActionsのSSHデバッグにはUptermが最有力【2026年版】

0
Posted at

GitHub Actionsの実行環境へSSH接続して、失敗したワークフローをその場で調査できるmxschmitt/action-tmateは非常に便利です。

しかし、action-tmateが標準で利用しているtmate.ioの公開サーバーは、2025年頃からSSH接続やWebシェルが不安定になりました。調べたところ、単なる一時障害ではなく、サービス運営者がサーバーの恒久停止を表明していました。

そこで本記事では、2026年8月時点で利用できるtmate.ioの代替を、次の観点から比較します。

  • GitHub Actionsへ簡単に導入できるか
  • 通常のSSHクライアントで接続できるか
  • ブラウザから操作できるか
  • GitHubのSSH公開鍵でアクセスを制限できるか
  • 公開リレーに依存せずセルフホストできるか
  • 現在もメンテナンスされているか

先に結論を書くと、GitHub ActionsでSSHデバッグするなら、現時点ではUptermが最も有力です。

tmate.ioで何が起きたのか

2025年7月、tmate利用者から「複数リージョンのサーバーへSSH接続できない」というIssueが報告されました。

これに対して、tmateの開発者は次のように回答しています。

It won't. I'm closing the servers permanently.

つまり、ssh.tmate.ioやlon1.tmate.ioなどの公開サーバーは、今後の復旧を前提にできません。

action-tmate側にも、Webシェルが503 Service Unavailableになり、SSHも安定しないという報告があります。

ここで区別しておきたいのは、終了したのは主にtmate.ioが提供していた公開リレーサービスだという点です。tmateのクライアントやtmate-ssh-serverはOSSとして残っているため、自分でサーバーを運用すれば引き続き利用できます。

ただし、tmate本体の最新リリースは古く、今から新しく構築するなら、より活発に開発されている代替も検討した方がよいでしょう。

代替候補の比較

GitHub Starsは2026年8月30日時点の概数です。Starsは人気度の参考にはなりますが、サービスの安定性や導入実績を保証するものではありません。

候補 GitHub Stars 通常のSSH ブラウザ GitHub Actions セルフホスト 向いている用途
Upterm / action-upterm 約1.3k / 58 ○ × 専用Action ○ GitHub ActionsのSSHデバッグ
sshx 約7.7k × ○ 1コマンド 公式非対応 ブラウザでの一時デバッグ
WarpBuild ActionDebugger 27 ○ ○ 専用Action tmateサーバーを指定可能 tmateに近い操作感
Tunshell 約817 独自クライアント ○ 1コマンド ○ CIや一時環境への接続
Tailscale 約35.8k ○ × 公式Action Headscale等で代替可能 常設サーバーへの安全な接続
ttyd+Cloudflare Tunnel 約12.3k × ○ 自作が必要 ○ ブラウザ端末の自前構築

1. Upterm:GitHub Actionsでは最有力

Uptermは、tmateの代替を明確に意識して作られたターミナル共有ツールです。

ホスト側で一時的なSSHサーバーを起動し、Uptermサーバーへリバーストンネルを張ります。利用者は表示された接続文字列を使い、通常のsshコマンドで接続できます。

ssh TOKEN@uptermd.upterm.dev

主な特徴は次のとおりです。

  • 通常のOpenSSHクライアントから接続可能
  • NATやファイアウォール内から利用可能
  • GitHub、GitLab、Codebergなどに登録したSSH公開鍵でアクセス制限可能
  • Linux、macOS、Windowsに対応
  • SFTP/SCPによるファイル転送に対応
  • SSHローカルポートフォワーディングに対応
  • 直接SSHが制限されている環境では、WebSocket+443番ポートを利用可能
  • uptermdをKubernetes、Fly.io、systemdなどでセルフホスト可能

2026年5月にはv0.24.0が公開されており、現在も更新が続いています。

GitHub Actionsへの導入

GitHub Actions用には、公式のowenthereal/action-uptermが用意されています。

name: Debug with Upterm

on:
  workflow_dispatch:
    inputs:
      debug_enabled:
        description: Enable SSH debugging
        type: boolean
        required: false
        default: false

jobs:
  debug:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      # 通常のビルドやテスト
      - name: Run tests
        run: npm test

      - name: Start Upterm session
        if: ${{ inputs.debug_enabled }}
        uses: owenthereal/action-upterm@v1
        with:
          limit-access-to-actor: true
          wait-timeout-minutes: 10

limit-access-to-actor: trueを指定すると、ワークフローを開始したGitHubユーザーの登録済みSSH公開鍵だけが許可されます。

事前にGitHubの「Settings → SSH and GPG keys」へ公開鍵を登録しておく必要があります。

直前のステップが失敗した場合だけSSHセッションを開始するなら、次の条件を利用できます。

if: ${{ failure() }}

調査後にワークフローを再開する場合は、SSHセッション内で次を実行します。

touch "$GITHUB_WORKSPACE/continue"

なお、古いlhotari/action-uptermは非推奨です。現在はowenthereal/action-uptermを使用します。

2025年の比較記事ではWindows未対応だった

action-tmateのIssueでは、当時のUptermについて「Windowsに対応していない」という欠点が挙げられていました。

しかし、その後Upterm v0.18.0でWindows対応が追加され、現在のaction-uptermはLinux、macOS、Windowsをサポートしています。したがって、2026年時点ではこの欠点は解消されています。

Uptermの弱点

Uptermには、tmate.ioのようなブラウザ版ターミナルがありません。

WebSocket接続には対応していますが、これはWebブラウザから操作する機能ではなく、SSHのProxyCommandを利用して443番ポート経由で接続する仕組みです。

また、標準ではコミュニティ運営のuptermd.upterm.devを利用します。tmate.ioと同様に無料公開リレーへ依存するため、重要な用途では自前のuptermdを用意する方が安全です。

2. sshx:ブラウザ操作なら最有力

sshxは、ブラウザ上で複数人が同時に操作できる共同ターミナルです。

GitHub Actionsでは次の1コマンドだけで開始できます。

- name: Start sshx session
  if: ${{ failure() }}
  timeout-minutes: 15
  run: curl -sSf https://sshx.io/get | sh -s run

実行するとURLが表示され、そのURLをブラウザで開くとGitHub Actionsのシェルを操作できます。

主な特徴は次のとおりです。

  • 約7.7k Starsと、直接的な代替候補の中では人気が高い
  • ブラウザだけで接続可能
  • 複数のターミナルを自由に配置できる
  • 参加者のカーソルやチャットを表示できる
  • Argon2とAESによるエンドツーエンド暗号化
  • Linux、macOS、Windowsに対応

一方で、次の制約があります。

  • OpenSSHやポート22で接続するサービスではない
  • 公式にはセルフホストをサポートしていない
  • URLを知っている人がセッションへ参加できる
  • GitHubのSSH公開鍵で接続者を制限できない

特に、パブリックリポジトリでは注意が必要です。ワークフローのログへ操作可能なURLが出力されるため、そのURLを見た第三者もセッションへ参加できる可能性があります。

sshx自身のREADMEでも、公開GitHubリポジトリへ追加する場合は注意するよう警告されています。そのため、sshxはプライベートリポジトリや短時間の一時デバッグに向いています。

3. WarpBuild ActionDebugger:tmateに最も近い

WarpBuild ActionDebuggerは、mxschmitt/action-tmateをフォークして作られたGitHub Actionです。

- name: Start interactive debug session
  if: ${{ failure() }}
  uses: Warpbuilds/action-debugger@v1.3
  with:
    limit-access-to-actor: true

次の点で、元のaction-tmateと非常によく似ています。

  • SSHとWebシェルの両方を提供
  • Linux、macOS、Windowsに対応
  • GitHubユーザーのSSH公開鍵でアクセス制限可能
  • detachedモードに対応
  • touch continueによるワークフロー再開に対応
  • 任意のtmateサーバーを指定可能

標準ではWarpBuildが運営するgha.warp.buildを利用します。

tmateからの変更を最小限にしたい場合や、SSHとブラウザの両方が必要な場合には有力です。ただし、GitHub Starsは27とまだ利用規模が小さく、外部のホスト型リレーへ依存する点はtmate.ioと共通しています。

4. Tunshell:CIや一時環境に特化

Tunshellは、CI/CDパイプライン、サーバーレス関数、コンテナなど、通常はSSHサーバーを導入しにくい一時環境への接続を目的としたツールです。

特徴は次のとおりです。

  • GitHub ActionsやBitbucket Pipelinesを想定
  • 静的リンクされた小さなクライアント
  • ブラウザ接続に対応
  • AES-GCM-256によるエンドツーエンド暗号化
  • 接続できる場合はP2P、できない場合はリレーへフォールバック
  • リレーサーバーをセルフホスト可能

用途はtmateに近いものの、専用GitHub ActionやGitHub SSH鍵との統合はUptermほど充実していません。Uptermやsshxで要件を満たせない場合の候補になります。

常設サーバーならTailscaleの方が適している

Raspberry Pi、自宅サーバー、遠隔地の端末へ継続的にアクセスしたい場合、ターミナル共有ツールよりTailscaleの方が適しています。

Tailscaleでは、接続元と接続先を同じTailnetへ参加させ、ACLでSSHアクセスを制御します。インターネットへポート22を公開する必要はありません。

GitHub ActionsをTailnetへ参加させる公式Actionもあります。

ただし、Tailscaleはtmateとは用途が異なります。

tmate/Upterm Tailscale
一時的なセッションを共有 マシンを継続的にネットワークへ参加させる
接続文字列やURLを共有 TailnetのユーザーとACLで管理
同じターミナル画面を共有可能 通常は接続者ごとに独立したSSHセッション
CIデバッグに向く 常設サーバーや端末管理に向く

したがって、次のように使い分けるのが分かりやすいでしょう。

  • GitHub Actionsの一時デバッグ:Upterm
  • Raspberry Piやサーバーへの常設アクセス:Tailscale

Cloudflare Tunnelで代替できるか

Cloudflare TunnelでもSSHを中継できますが、tmate.ioのような一行で使えるセッション共有サービスではありません。

通常のSSHで接続する場合は、次の設定が必要です。

  1. Cloudflareで名前付きTunnelを作成
  2. 自分のドメインを設定
  3. 接続先でcloudflaredとsshdを起動
  4. Cloudflare Accessの認証ポリシーを設定
  5. 接続元にもcloudflaredをインストールするか、Cloudflare One Clientを利用

Cloudflareにはブラウザレンダリング型のSSHターミナルもありますが、こちらも名前付きTunnelとAccessの設定が必要です。

ttyd+Cloudflare Quick Tunnel

ブラウザから一時的に操作するだけなら、ttydとCloudflare Quick Tunnelを組み合わせる方法があります。

ttyd \
  --writable \
  --port 7681 \
  --credential "debug:${TTYD_PASSWORD}" \
  bash &

cloudflared tunnel --url http://localhost:7681

ttydがシェルをWebSocket対応のWebアプリとして公開し、Cloudflare Tunnelがランダムなtrycloudflare.com URLを発行します。

ただし、CloudflareはQuick Tunnelについて次のように明記しています。

  • 開発・テスト専用
  • SLAや稼働率を保証しない
  • URLは起動ごとに変わる
  • 同時リクエスト数に制限がある

そのため、これは便利な一時デバッグ手段ではありますが、tmate.io停止問題の根本的な解決にはなりません。安定性が必要なら、名前付きTunnel+Accessを利用する必要があります。

Starsが多くても直接の代替とは限らない

周辺ツールには、さらにStarsが多いプロジェクトもあります。

しかし、これらは単体でtmateと同じ機能を提供するわけではありません。

  • ttydはWebターミナルなので、別途Tunnelや公開サーバーが必要
  • boreは任意のTCPポートを公開するツールなので、別途sshd、ユーザー、SSH鍵の設定が必要
  • Tailscaleはプライベートネットワークであり、共同ターミナル共有ではない

したがって、単純なStars順ではなく、接続方法とアクセス制御を確認して選ぶ必要があります。

結論

2026年8月時点では、次の選択がおすすめです。

要件 推奨
GitHub Actionsへ通常のSSHで接続したい Upterm/action-upterm
ブラウザだけで素早く操作したい sshx
tmateと同じSSH+Webシェルが必要 WarpBuild ActionDebugger
CIやサーバーレスなど特殊な一時環境 Tunshell
Raspberry Piや常設サーバーへ継続接続 Tailscale
ブラウザ端末を自前で構築したい ttyd+名前付きCloudflare Tunnel
既存のtmate構成を完全に維持したい tmate-ssh-serverをセルフホスト

GitHub ActionsのSSHデバッグという用途だけで考えると、現在の第一候補はowenthereal/action-uptermです。

ただし、Uptermの公開コミュニティサーバーも無料の外部リレーです。tmate.ioと同じ問題を避けたい重要な環境では、最終的にuptermdをセルフホストするか、TailscaleやCloudflare Accessのような認証・運用基盤を利用するのが安全です。

参考資料

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?