feat: reverse SSH tunnel для роутеров без белого IP + README переработан

- server/config.py: VPS_SSH_HOST, VPS_SSH_PORT, VPS_SSH_USER, TUNNEL_PORT_START
- server/.env.example: секция тоннеля
- server/main.py: _gen_ed25519_keypair, _add_pubkey_to_authorized_keys;
  _ssh_on_router и _push_one_router поддерживают tunnel_port;
  эндпоинты tunnel-cmd, tunnel-script (одноразовый токен 10 мин),
  tunnel-status, DELETE tunnel
- index.html: кнопка ⇄ у каждого роутера + подсветка тоннельного порта,
  кнопка ⇄ Тоннель в форме добавления, модалка с curl-командой,
  копирование (clipboard + execCommand fallback), проверка связи
- README: полная переработка — туннель, логины/пароли, ошибки, советы

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Андрей Бобырев
2026-04-28 09:57:48 +03:00
parent 61205df0cb
commit 708b4b04dc
4 changed files with 346 additions and 21 deletions

View File

@@ -7,3 +7,10 @@ ADMIN_PASSWORD=ВАШ_НАДЁЖНЫЙ_ПАРОЛЬ_ВЕБ
SSH_USER=root
SSH_PASS=ПАРОЛЬ_SSH_РОУТЕРА
# Reverse SSH tunnel — для роутеров без белого IP
# Если VPS_SSH_HOST задан — в UI появляется кнопка «⇄ Тоннель» у каждого роутера
VPS_SSH_HOST=
VPS_SSH_PORT=22
VPS_SSH_USER=root
TUNNEL_PORT_START=20100