Общ преглед
WebSSH е специализиран Docker образ, който осигурява терминален достъп до отдалечени сървъри директно през вашия уеб браузър. Проектът е базиран на мощния Python-базиран инструмент WebSSH, но е оптимизиран и контейнеризиран за бързо внедряване, сигурност и минимално потребление на ресурси.
Този инструмент е идеалното решение за системни администратори и DevOps инженери, които имат нужда от надежден достъп до командния ред (CLI) без значение от устройството или локалната софтуерна конфигурация.



Ключови предимства
- Достъп отвсякъде: Нямате нужда от инсталиран SSH клиент (като PuTTY или OpenSSH) на локалната машина. Всичко, от което се нуждаете, е съвременен уеб браузър.
- Лесна интеграция: Благодарение на Docker, внедряването отнема секунди. Образът е лек и може да бъде част от по-голяма микросървисна архитектура.
- Сигурност: Поддържа работа през HTTPS, което гарантира, че данните между вашия браузър и терминала са криптирани. Може да се използва като защитен портал (Bastion Host) за достъп до машини във вътрешна мрежа.
- Гъвкавост: Възможност за използване на различни теми, шрифтове и настройки на терминала за максимално удобство при работа.
Сценарии на употреба
- Администриране в движение: Бърза проверка или рестарт на услуги от таблет или телефон, когато нямате достъп до работното си място.
- Работа зад корпоративни защитни стени: Често стандартният порт 22 е блокиран в публични или корпоративни мрежи. WebSSH позволява връзка през стандартните уеб портове (80/443).
- Home-Lab управление: Удобен интерфейс за управление на домашната ви сървърна конфигурация от всяко устройство в мрежата.
Инсталация и Настройка
Проектът е проектиран да бъде максимално лесен за внедряване в различни контейнерни среди.
1. Използване с Docker
За да стартирате контейнера бързо, можете да използвате стандартната команда docker run.
Команда за стартиране:
docker run -d \
--name webssh \
-p 8888:8888 \
-e PORT=8888 \
danaildr/webssh
2. Конфигурация чрез променливи на средата (Environment Variables)
Можете да персонализирате работата на контейнера чрез следните променливи:
| Променлива | Описание | Стойност по подразбиране |
|---|---|---|
PORT | Портът, на който приложението ще слуша вътре в контейнера. | 8888 |
ADDRESS | IP адресът, на който да се биндне услугата. | 0.0.0.0 |
FRENZY | Режим за предотвратяване на прекъсване на връзката. | False |
RECORDING_ENABLED | Активира автоматичния запис на сесии. | true |
RECORDING_RETENTION_DAYS | Срок на съхранение на записите (в дни). | 30 |
3. Използване с Docker Compose
За по-лесно управление, особено ако използвате reverse proxy (като Nginx или Traefik), препоръчваме използването на docker-compose.yml.
Примерен файл:
version: '3.8'
services:
webssh:
image: danaildr/webssh
container_name: webssh
ports:
- "8888:8888"
environment:
- PORT=8888 - RECORDING_ENABLED=true
- RECORDING_RETENTION_DAYS=30
restart: always
4. Използване в Podman среда
Контейнерът е напълно съвместим с Podman и може да се стартира в среди без root права (rootless), което е отлично за сигурността.
Инсталация с Podman:
podman run -d \
--name webssh \
-p 8888:8888 \
-e PORT=8888 \
docker.io/danaildr/webssh
Забележка: При Podman е препоръчително да посочите пълния път към хранилището (docker.io/danaildr/webssh), за да избегнете неясноти при търсенето на образа.
5. Достъп до интерфейса
След като контейнерът е стартиран, отворете вашия браузър и посетете: http://localhost:8888 (или IP адреса на вашия сървър).
Сигурност и управление на сесиите
За да се гарантира максимална защита на вашите връзки, проектът включва вградени механизми за автоматично заключване и прекъсване на сесиите при неактивност. Тези настройки са индивидуални за всяка конекция, което позволява гъвкавост според нуждите на конкретния сървър.
🔒 Автоматично заключване (Lock)
Тази функционалност предотвратява неоторизиран достъп до отворена сесия, ако оставите устройството си без надзор. След изтичане на зададеното време, интерфейсът се заключва и изисква повторна оторизация.
- Налични опции: 5, 15, 30 или 60 минути.
🔌 Автоматично прекъсване (Disconnect Timeout)
За по-добра оптимизация на ресурсите и допълнителна сигурност, системата може автоматично да затвори SSH връзката, ако не се отчита активност в терминала.
- Налични опции: 30 минути, 60 минути или опцията Never (никога), ако имате нужда от постоянна връзка за дълги процеси.
Управление и запис на сесии (Session Recording)
Проектът разполага с мощна система за автоматичен одит и запис на всяка SSH сесия. Това гарантира пълна проследимост на действията, без да е необходима ръчна намеса при всяко свързване.
🔐 Сигурност и поверителност
Сигурността е заложена в ядрото на функционалността:
- Криптиране: Всички записи се съхраняват в криптиран вид на сървъра.
- Ограничен достъп: Записите са достъпни единствено за вписания потребител, който е осъществил съответната връзка. Вашите данни са защитени от неоторизиран достъп.
⚙️ Автоматизация и Конфигурация
Записите стартират автоматично при всяко установяване на връзка. Администраторът може да управлява това поведение чрез следните променливи на средата:
RECORDING_ENABLED=true– Разрешава или забранява (при стойностfalse) автоматичното записване на сесиите.RECORDING_RETENTION_DAYS=30– Определя колко дни да се пазят записите, преди да бъдат автоматично изтрити от системата.
🛠 Управление на записите
Потребителите имат пълен контрол върху вече генерираните файлове чрез вградения интерфейс:
- Вграден плеър: Можете да преглеждате (плейвате) записите директно в браузъра, без да е необходим външен софтуер.
- Сваляне: Възможност за изтегляне на файловете в .cast формат.
- Ръчно изтриване: Потребителят може по всяко време ръчно да изтрие конкретен запис, преди да е изтекъл периодът на автоматично изтриване.
📊 Формат на файловете (.cast)
Използването на .cast формат позволява изключително висока ефективност – файловете са компактни, тъй като съхраняват текстовия поток и времевите интервали, което прави възпроизвеждането им идентично с реалното преживяване в терминала.
Връзки към проекта:
- Docker Hub: danaildr/webssh