アップデート一覧に戻る
New releaseAug 20, 2026

Bastillion v5.2.0

Bastillionは、すべてのシステムにおけるSSHアクセスを管理するためのクリーンでブラウザベースの方法を提供します—フレンドリーなダッシュボードを備えた踏み台ホストのようなものです。

共有

Build CodeQL License Java Built with Claude Code Website

Bastillion

Bastillion

モダンなWebベースのSSHコンソールおよびSSH鍵管理ツール。

Bastillionは、すべてのシステムにわたるSSHアクセスを、クリーンなブラウザベースの方法で管理できるようにします — 使いやすいダッシュボードを備えた踏み台ホストのようなものです。できることは2つあります:

  1. WebベースのSSHターミナル — ホストが登録されると、認可されたユーザーはブラウザから直接、そのホストに対して1つ以上のライブターミナルセッションを開くことができ、コマンドはオプションで開いているすべてのセッションに一斉にブロードキャストできます(tmuxの同期ペインのようなものですが、ローカルのペインではなくリモートホストのフリートに対するものです)。

  2. SSH鍵管理 — Bastillionは自身のSSH鍵ペアを保持し、登録したホストに公開鍵をプッシュ/ローテーションするため、個々のユーザーがそれらのシステムへの長期間有効な鍵を自分で保持・管理する必要はありません。

  • 2要素認証(AuthyまたはGoogle Authenticator)でログイン
  • SSH公開鍵を管理・配布し、中央から無効化/ローテーション
  • 安全なマルチセッションWebシェルを起動し、セッション間でコマンドを共有
  • すべてのセッションを記録し、オンデマンドで再生 — あらゆるコンプライアンスフレームワークに対応する監査可能な証跡
  • システムをプロファイルにグループ化し、誰が何にアクセスできるかを正確に制御
  • 複合スクリプトを保存し、フリート全体に対して一度に再実行
  • 追加保護のためにSSH上のTLS/SSLをスタック

同じコマンドを3つのホストに同時にブロードキャストする複数のターミナル

3つの実際の独立したSSHセッション — 1つのコマンドを一度入力するだけで、すべてのホストで実行されます。


目次


仕組み

Bastillionは、ユーザーとユーザーがアクセスする必要のあるシステムの間に位置し、単なるパスワード保管庫ではなく、信頼された第三者として機能します。ここでは、ライフサイクル全体を最初から最後まで説明します。

1. Bastillionが自身のSSH鍵ペアを生成

初回起動時、何よりも先に、Bastillionは自身用のEd25519鍵ペアを生成します — これが、あなたのホストにプッシュされる唯一の鍵です。これはコンソール出力に表示され、常に設定で確認できます。

2. システムを登録

管理者は管理 → システムでホストを追加します(ユーザー、ホスト、ポート、およびそのホストのauthorized_keysファイルへのパス)。Bastillionは、あなたが提供するパスワードまたはパスフレーズで一度だけ認証し、自身の公開鍵をそのホストのauthorized_keysにプッシュします。それ以降は、その鍵を使って接続します — 保存されたパスワードは一切ありません。鍵が配置された瞬間にステータスが成功に変わります。

システムの管理 — 3つのホストが登録され、すべて成功ステータスを表示

3. システムをプロファイルにグループ化し、ユーザーを割り当て

システムは名前付きのプロファイルにグループ化されます — 「本番」「ステージング」「データベース層」のようなものです。その後、ユーザーは管理 → ユーザーでプロファイルにリンクされます。これが、誰が何にアクセスできるかを制御する唯一のものです。プロファイルの割り当てを取り消せば、そのアクセスは即座に失われ、鍵のローテーションは不要です。

3つのシステムを本番プロファイルに割り当てる

4. ターミナルを開く — そしてすべてに一斉にブロードキャスト

割り当てられたユーザーはセキュアシェル → ターミナルを開き、1つ以上のシステムを選択すると、ブラウザ内にライブでリサイズ可能なxtermベースのターミナルが並んで表示されます。一度入力すると、アクティブとしてマークされたすべてのターミナルに送信されます — 選択したホストの数だけ、同じキーストローク、同じコマンド、同じ出力形状が届きます。

ヘルスチェックコマンドを3つのターミナルに同時にブロードキャストし、3つすべてで同じ出力形状

5. 鍵を中央からローテーションまたは無効化

すべてのホストが同じアプリケーション鍵を信頼しているため(ユーザーごとに1つの鍵ではない)、SSH鍵の管理で一度無効化すれば、すべての場所で即座にアクセスが取り消されます — ターゲットシステムを手作業で触る必要も、どのサーバーにどの古い鍵があるかを探し回る必要もありません。

プロファイル、フィンガープリント、作成日、削除アクションを備えたSSH鍵の管理

6. すべてのセッションが記録される — 監査と再生

それらのターミナルで入力されたすべてと、返されたすべてのバイトが自動的に記録されます。管理者は監査セッションを開き、ユーザーまたはシステムでフィルタリングし、任意のセッションを再生できます — 複数のホストにまたがるセッションでは並べて表示され、重要な行に直接ジャンプするためのテキストフィルターも備えています。出力は読み込みに応じてページにストリーミングされるため、数百メガバイトのログを吐き出したセッションでも苦もなく再生されます。

監査人に対して、誰が何を、どこで、いつ実行したかを示す必要があるなら — これがその証跡であり、すぐに使える形で取得されます。実質的にすべてのコンプライアンスフレームワークには、どこかに特権アクセスの監査証跡要件があります(PCI DSS、HIPAA、SOC 2、ISO 27001 — あなたのものを選んでください)。これは商用のPAM製品なしでその要件を満たします。セッションはデフォルトで90日間保持され(deleteAuditLogAfter)、記録はENABLE_INTERNAL_AUDIT=falseで無効にできます — 監査を参照してください。

ユーザーおよびシステムフィルター付きで一覧表示された監査セッション


🚀 新着情報

  • SAML 2.0 SSO — エンタープライズIdP(Entra ID、Okta、ADFSなど)経由でサインイン — 設定を参照
  • ライセンス — 最大8システムまで無料、有料ティアはloophole.company/pricing.htmlで利用可能(下記のライセンスを参照)
  • セッション監査と再生、デフォルトで有効 — すべてのターミナルセッションが記録され、監査セッションで再生可能。ブラウザにストリーミングされるため、巨大なセッションでも即座に読み込まれます
  • 自己完結型jar(java -jar)として実行され、HTTPSがすぐに使えます — ダウンロードと実行を参照
  • Java 21、Jetty 12、Jakarta EE 10にアップグレード
  • Ed25519(デフォルト)およびEd448 SSH鍵を完全サポート
  • 既存インスタンスからユーザー、システム、鍵、監査ログを引き継ぐv4 → v5移行ツール — tools/migrateを参照
  • CSRFフィルターとアプリ全体のセキュリティヘッダーで強化

ライセンス

Bastillionは最大8台の登録システムまでライセンスなしで動作します — 購入前に実際に試すのに十分です。ライセンスを購入するとその上限が引き上げられます。

  1. loophole.company/pricing.html でライセンスを購入します (Starter/Team/Business — システム数に応じた価格設定)。支払い後はリダイレクトで戻り、.licファイルが自動的にダウンロードされます。
  2. .licファイルを開き、その内容(1行)をコピーします。
  3. LICENSE_KEY環境変数で設定します: ```bash export LICENSE_KEY=

または BastillionConfig.properties の licenseKey に貼り付けてください。両方が設定されている場合は環境変数が優先されます。 4. Bastillion を再起動します。Settings にライセンス保有者、システム上限、有効期限が表示され、有効期限の 90 日前から警告が表示されます。

ライセンスは年単位で、自動更新はされません — カード情報は保存されません。有効期限の警告が表示されたら、同じ価格ページから再度購入してください。


インストールオプション

無料: https://github.com/Loophole-LLC/Bastillion/releases


前提条件

Java 21 (OpenJDK)```bash

apt-get install openjdk-21-jdk

### 認証アプリ(2FA用)

| アプリケーション | Android | iOS |
|--------------|----------|-----|
| **Authy** | [Google Play](https://play.google.com/store/apps/details?id=com.authy.authy) | [iTunes](https://itunes.apple.com/us/app/authy/id494168017) |
| **Google Authenticator** | [Google Play](https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2) | [iTunes](https://itunes.apple.com/us/app/google-authenticator/id388497605) |

---

## ダウンロードと実行

最新のjarを[Releases](https://github.com/Loophole-LLC/Bastillion/releases)からダウンロードしてください:```bash
java -jar bastillion-<version>.jar

ブラウザでアクセス: https://<server-ip>:8443 — 初回起動時に Bastillion が生成する自己署名証明書については、以下の TLS / HTTPS を参照してください。

デフォルトの認証情報:``` username: admin password: changeme

フォアグラウンドで実行されます。Ctrl+C で停止します。バックグラウンド/デーモン運用には、長時間実行される Java プロセスに対してお使いのプラットフォームが通常使用する方法 — `nohup java -jar ... &`、systemd ユニット、コンテナなど — を使用してください。

---

## ソースからのビルド

Maven 3+ をインストールします:```bash
apt-get install maven

ビルドして実行(io.bastillion.Main を参照 — 組み込み Jetty サーバーを含む自己完結型 jar をパッケージ化し、実行します):```bash mvn package java -jar target/bastillion-5.0.0-SNAPSHOT.jar

または、変更のたびに再パッケージ化せずにローカル開発を行う場合:```bash
mvn compile exec:java

ローカルUIレビューを分離して行う場合は、テストデータを別のディレクトリに置き、初回起動時にデータベースパスワードを自動生成してください:```bash CONFIG_DIR=/tmp/bastillion-ui-review/ TLS_ENABLED=false PORT=8080
mvn -DGEN_DB_PASS=true compile exec:java

`http://localhost:8080` を開き、上記のデフォルト認証情報でサインインします。この HTTP
設定はローカル開発用です。デプロイ時には、後述のとおり HTTPS を使用してください。
HTML、CSS、JavaScript は `target/classes/webapp` から配信されます。`src/main/webapp` 配下のファイルを編集した後は、
`mvn resources:resources` を実行してブラウザをリロードすると変更が反映されます。テンプレートは最大60秒間キャッシュされます。
そのキャッシュを即座にクリアするには、開発プロセスを再起動してください。

デフォルトでは `https://localhost:8443` で待ち受けます。これは上記でダウンロードしたリリースと同じです。この証明書がどのように設定されるか、また代わりに独自の証明書を使用する方法については、後述の
[TLS / HTTPS](#tls--https) を参照してください。

---

## TLS / HTTPS

カテゴリ