업데이트로 돌아가기
New releaseAug 20, 2026

Bastillion v5.2.0

Bastillion은 모든 시스템에 대한 SSH 접근을 브라우저 기반으로 깔끔하게 관리할 수 있는 방법을 제공합니다—마치 친숙한 대시보드를 갖춘 배스천 호스트와 같습니다.

공유

Build CodeQL License Java Built with Claude Code Website

Bastillion

Bastillion

현대적인 웹 기반 SSH 콘솔 및 SSH 키 관리 도구.

Bastillion은 모든 시스템 전반의 SSH 접근을 깔끔한 브라우저 기반 방식으로 관리할 수 있게 해줍니다 — 마치 친근한 대시보드가 달린 배스천 호스트처럼요. 두 가지 일을 합니다:

  1. 웹 기반 SSH 터미널 — 호스트가 등록되면, 권한이 부여된 사용자는 브라우저에서 직접 하나 이상의 실시간 터미널 세션을 열 수 있으며, 명령을 열려 있는 모든 세션에 한 번에 브로드캐스트할 수도 있습니다 (tmux의 동기화된 패널을 떠올려 보세요, 다만 로컬 패널이 아닌 원격 호스트 플릿을 대상으로 합니다).

  2. SSH 키 관리 — Bastillion은 자체 SSH 키페어를 보유하고, 등록한 호스트 전반에 공개 키를 푸시/교체하므로, 개별 사용자가 해당 시스템에 대한 장기 키를 직접 보유하거나 관리할 필요가 없습니다.

  • 2단계 인증(Authy 또는 Google Authenticator)으로 로그인
  • SSH 공개 키를 관리 및 배포하고, 중앙에서 비활성화/교체
  • 안전한 다중 세션 웹 셸을 실행하고 세션 간에 명령 공유
  • 모든 세션을 기록하고 필요 시 재생 — 모든 컴플라이언스 프레임워크에 대응하는 감사 준비 증거
  • 시스템을 프로필로 그룹화하고 누가 무엇에 접근할 수 있는지 정확히 제어
  • 복합 스크립트를 저장하고 전체 플릿에 한 번에 재실행
  • 추가 보호를 위해 SSH 위에 TLS/SSL을 적층

세 개의 호스트에 동일한 명령을 한 번에 브로드캐스트하는 여러 터미널

세 개의 실제 독립적인 SSH 세션 — 명령을 한 번 입력하면 모든 곳에서 실행됩니다.


목차


작동 방식

Bastillion은 사용자와 사용자가 접근해야 하는 시스템 사이에 위치하며, 단순한 비밀번호 금고가 아닌 신뢰할 수 있는 제3자 역할을 합니다. 전체 수명 주기를 처음부터 끝까지 살펴보겠습니다.

1. Bastillion이 자체 SSH 키페어를 생성합니다

최초 시작 시, 그 무엇보다도 먼저 Bastillion은 자신을 위한 Ed25519 키페어를 생성합니다 — 이것이 호스트에 푸시되는 유일한 키입니다. 콘솔 출력에 표시되며 Settings에서 항상 확인할 수 있습니다.

2. 시스템 등록

관리자가 Manage → Systems에서 호스트를 추가합니다 (사용자, 호스트, 포트, 그리고 해당 호스트의 authorized_keys 파일 경로). Bastillion은 사용자가 제공한 비밀번호 또는 패스프레이즈로 한 번 인증한 다음, 자신의 공개 키를 해당 호스트의 authorized_keys에 푸시합니다. 그 이후로는 해당 키를 사용해 연결합니다 — 저장된 비밀번호는 결코 없습니다. 키가 자리 잡는 순간 상태가 Success로 바뀝니다.

Manage Systems — 세 개의 호스트가 등록되어 모두 Success 상태 표시

3. 시스템을 프로필로 그룹화하고 사용자 할당

시스템은 이름이 지정된 프로필로 그룹화됩니다 — "Production", "Staging", "Database Tier" 같은 것을 떠올려 보세요. 그런 다음 사용자가 Manage → Users에서 프로필에 연결되며, 이것이 누가 무엇에 접근할 수 있는지를 제어하는 유일한 수단입니다. 프로필 할당을 취소하면 해당 접근 권한은 즉시 사라지며, 키 교체는 필요하지 않습니다.

세 개의 시스템을 Production 프로필에 할당

4. 터미널을 열고 — 한 번에 모두에 브로드캐스트

할당된 사용자가 Secure Shell → Terminals를 열고 하나 이상의 시스템을 선택하면, 브라우저에서 나란히 배치된 실시간 크기 조절 가능한 xterm 기반 터미널을 얻습니다. 한 번 입력하면 활성으로 표시된 모든 터미널로 전달됩니다 — 동일한 키 입력, 동일한 명령, 동일한 출력 형태가 선택한 호스트 수만큼 전달됩니다.

세 개의 터미널에 동시에 브로드캐스트된 상태 확인 명령, 세 곳 모두 동일한 출력 형태

5. 중앙에서 키 교체 또는 폐기

모든 호스트가 동일한 애플리케이션 키를 신뢰하기 때문에 (사용자당 하나의 키가 아님), Manage SSH Keys에서 한 번 비활성화하면 모든 곳의 접근이 즉시 폐기됩니다 — 대상 시스템을 수동으로 건드릴 필요도, 어느 서버에 어떤 오래된 키가 있는지 찾아다닐 필요도 없습니다.

프로필, 지문, 생성 날짜, 삭제 작업이 있는 Manage SSH keys

6. 모든 세션이 기록됩니다 — 감사 및 재생

해당 터미널에서 입력된 모든 것과 반환된 모든 바이트가 자동으로 기록됩니다. 관리자는 Audit Sessions를 열고 사용자 또는 시스템별로 필터링한 다음, 어떤 세션이든 재생할 수 있습니다 — 여러 호스트에 걸친 세션의 경우 나란히 표시되며, 중요한 줄로 바로 이동할 수 있는 텍스트 필터도 제공됩니다. 출력은 로드되는 대로 페이지로 스트리밍되므로, 수백 메가바이트의 로그를 덤프한 세션조차 문제없이 재생됩니다.

누가 무엇을, 어디서, 언제 실행했는지 감사자에게 보여줘야 한다면 — 이것이 바로 그 증거이며, 기본 제공됩니다. 실질적으로 모든 컴플라이언스 프레임워크에는 어딘가에 특권 접근 감사 추적 요구 사항이 있습니다 (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에서 이용 가능 (아래 라이선스 참조)
  • 세션 감사 및 재생, 기본 활성화 — 모든 터미널 세션이 기록되며 Audit Sessions에서 재생 가능하고, 브라우저로 스트리밍되어 거대한 세션도 즉시 로드됩니다
  • HTTPS가 기본 제공되는 자체 포함 jar(java -jar)로 실행 — 다운로드 및 실행 참조
  • 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 파일을 열고 내용을 복사하세요 (한 줄).
  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) |

---

## 다운로드 및 실행

[Releases](https://github.com/Loophole-LLC/Bastillion/releases)에서 최신 jar를 다운로드하세요:```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

빌드 및 실행 (내장 Jetty 서버를 포함한 자체 완결형 jar를 패키징하고 — io.bastillion.Main 참조 — 실행합니다):```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초 동안 캐시됩니다.
캐시를 즉시 지우려면 개발 프로세스를 재시작하십시오.

카테고리