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で接続する場合は、次の設定が必要です。
- Cloudflareで名前付きTunnelを作成
- 自分のドメインを設定
- 接続先で
cloudflaredとsshdを起動 - Cloudflare Accessの認証ポリシーを設定
- 接続元にも
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のような認証・運用基盤を利用するのが安全です。