WebSSH: Сигурен Терминален Достъп от Всяко Устройство

Общ преглед

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

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

Ключови предимства

  • Достъп отвсякъде: Нямате нужда от инсталиран SSH клиент (като PuTTY или OpenSSH) на локалната машина. Всичко, от което се нуждаете, е съвременен уеб браузър.
  • Лесна интеграция: Благодарение на Docker, внедряването отнема секунди. Образът е лек и може да бъде част от по-голяма микросървисна архитектура.
  • Сигурност: Поддържа работа през HTTPS, което гарантира, че данните между вашия браузър и терминала са криптирани. Може да се използва като защитен портал (Bastion Host) за достъп до машини във вътрешна мрежа.
  • Гъвкавост: Възможност за използване на различни теми, шрифтове и настройки на терминала за максимално удобство при работа.

Сценарии на употреба

  1. Администриране в движение: Бърза проверка или рестарт на услуги от таблет или телефон, когато нямате достъп до работното си място.
  2. Работа зад корпоративни защитни стени: Често стандартният порт 22 е блокиран в публични или корпоративни мрежи. WebSSH позволява връзка през стандартните уеб портове (80/443).
  3. Home-Lab управление: Удобен интерфейс за управление на домашната ви сървърна конфигурация от всяко устройство в мрежата.

Инсталация и Настройка

Проектът е проектиран да бъде максимално лесен за внедряване в различни контейнерни среди.

1. Използване с Docker

За да стартирате контейнера бързо, можете да използвате стандартната команда docker run.

Команда за стартиране:

2. Конфигурация чрез променливи на средата (Environment Variables)

Можете да персонализирате работата на контейнера чрез следните променливи:

ПроменливаОписаниеСтойност по подразбиране
PORTПортът, на който приложението ще слуша вътре в контейнера.8888
ADDRESSIP адресът, на който да се биндне услугата.0.0.0.0
FRENZYРежим за предотвратяване на прекъсване на връзката.False
RECORDING_ENABLEDАктивира автоматичния запис на сесии.true
RECORDING_RETENTION_DAYSСрок на съхранение на записите (в дни).30

3. Използване с Docker Compose

За по-лесно управление, особено ако използвате reverse proxy (като Nginx или Traefik), препоръчваме използването на docker-compose.yml.

Примерен файл:

4. Използване в Podman среда

Контейнерът е напълно съвместим с Podman и може да се стартира в среди без root права (rootless), което е отлично за сигурността.

Инсталация с Podman:

Забележка: При 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 формат позволява изключително висока ефективност – файловете са компактни, тъй като съхраняват текстовия поток и времевите интервали, което прави възпроизвеждането им идентично с реалното преживяване в терминала.

Връзки към проекта: