Grok version
This commit is contained in:
NW
2025-12-22 18:08:01 +00:00
parent 91e22c649a
commit 78a356fe6d

231
README.md
View File

@@ -1,25 +1,22 @@
# Автономный менеджер SSH туннелей (VPS SSH Tunnel Manager)
Автономный менеджер SSH туннелей (VPS SSH Tunnel Manager)
## Описание
Автономный менеджер SSH туннелей — это комплексное решение для создания и управления безопасными обратными SSH подключениями к вашему VPS. Система предназначена для работы на мини-ПК или серверах без постоянного мониторинга, с полной автономностью и самовосстановлением при обрывах соединения.
### Ключевые возможности
## Ключевые возможности
- **Полная автономность**: автоматический запуск и поддержка туннелей после перезагрузки
- **Самовосстановление**: автоматическое переподключение при обрывах соединения
- **Поддержка различных туннелей**:
- Прямые туннели (проброс локальных портов на VPS)
- Обратные туннели (доступ к ресурсам за VPS)
- Двунаправленная маршрутизация
- **Автоматическая настройка SSH**: генерация ключей, настройка конфигурации
- **Поддержка разных дистрибутивов**: Debian, Ubuntu, CentOS, RHEL, Fedora
- **Цветное меню управления**: интуитивный интерфейс с визуализацией статуса
- **Systemd интеграция**: службы и таймеры для мониторинга
- Полная автономность: автоматический запуск и поддержка туннелей после перезагрузки
- Самовосстановление: автоматическое переподключение при обрывах соединения
- Поддержка обратных туннелей (доступ к локальным ресурсам с VPS)
- Автоматическая настройка SSH: генерация ключей (ed25519), настройка конфигурации
- Поддержка разных дистрибутивов: Debian, Ubuntu, CentOS, RHEL, Fedora
- Простое меню управления через tunnel-manager
- Systemd интеграция: службы и мониторинг
## Быстрый старт
### Установка одной командой
Установка одной командой:
```bash
sudo bash <(curl -s https://git.softuniq.eu/OpenDoor/vps_ssh_tunel/raw/branch/main/install_ssh_tunnel.sh)
@@ -29,218 +26,74 @@ sudo bash <(curl -s https://git.softuniq.eu/OpenDoor/vps_ssh_tunel/raw/branch/ma
### Предварительные требования
- Сервер с ОС Linux (Debian/Ubuntu, CentOS/RHEL или совместимые)
- Права суперпользователя (root/sudo)
- Доступ к удаленному VPS с открытым SSH портом
- Интернет-соединение для загрузки зависимостей
- Linux ОС (Debian/Ubuntu, CentOS/RHEL или совместимые)
- Права root
- Доступ к VPS с SSH
- Интернет для зависимостей
### Шаги установки
### Шаги
1. Запустите скрипт:
1. **Запустите установочный скрипт**:
```bash
curl -s https://git.softuniq.eu/OpenDoor/vps_ssh_tunel/raw/branch/main/install_ssh_tunnel.sh | sudo bash
```
2. **Следуйте интерактивным подсказкам**:
- Введите данные вашего VPS (IP-адрес, порт, пользователь)
- Система автоматически определит дистрибутив и установит зависимости
- Будет сгенерирован SSH ключ и скопирован на VPS
2. Введите данные VPS по подсказкам.
3. Управляйте туннелями:
3. **Настройте туннели**:
После установки запустите менеджер туннелей:
```bash
tunnel-manager
```
## Управление туннелями
### Основные команды
```bash
# Запуск менеджера с цветным меню
tunnel-manager
# Проверка статуса служб мониторинга
systemctl status tunnel-monitor
# Просмотр логов в реальном времени
journalctl -u tunnel-monitor -f
# Просмотр логов установки
cat /tmp/ssh_tunnel_install.log
tunnel-manager list # Список туннелей
tunnel-manager create # Создать новый
```
### Создание туннелей через меню
## Пример проброса SSH
1. **Автономный туннель** (опция 1) — полная настройка с мониторингом
2. **Быстрый SSH туннель** (опция 2) — проброс порта 22 для удаленного доступа
3. **Обратный туннель** — доступ к ресурсам, находящимся за VPS
После создания примера, подключитесь с VPS:
### Пример: проброс SSH доступа
При настройке быстрого туннеля система:
1. Пробрасывает локальный порт 22 на удаленный порт VPS (например, 10022)
2. Создает systemd службу для автономной работы
3. Настраивает автоматический мониторинг и восстановление
Для подключения используйте:
```bash
ssh -p 10022 ваш_пользователь@vps_ip
ssh -p 10022 user@localhost
```
## Структура системы
## Структура
### Установленные компоненты
- /opt/ssh_tunnel_manager/ - Скрипты
- /etc/ssh_tunnel/ - Конфиги
- /var/log/ssh_tunnel/ - Логи
- /root/.ssh/ - Ключи
| Путь | Назначение |
|------|------------|
| `/opt/ssh_tunnel_manager/` | Основные скрипты управления |
| `/etc/ssh_tunnel/` | Конфигурационные файлы туннелей |
| `/var/log/ssh_tunnel/` | Логи работы туннелей и мониторинга |
| `/root/.ssh/` | SSH ключи и конфигурация |
| `/etc/systemd/system/` | Systemd службы и таймеры |
## Systemd службы
### Systemd службы
- **tunnel-monitor.service** — мониторинг и восстановление туннелей
- **ssh-tunnel-*.service** — индивидуальные службы для каждого туннеля
- **tunnel-check.timer** — периодическая проверка соединений
- tunnel-monitor.service — мониторинг
- ssh-tunnel-*.service — туннели
## Настройка SSH
### Автоматически настроенные параметры
Система автоматически настраивает:
- Генерацию RSA ключа 4096 бит
- Конфигурацию SSH клиента для автономной работы
- Отключение строгой проверки хостов (для автоматического подключения)
- Настройку keepalive для поддержания соединения
- Поддержку как root, так и обычных пользователей
### Ручная настройка ключей
Если автоматическое копирование ключа не удалось, выполните:
```bash
# Показать публичный ключ
cat /root/.ssh/id_rsa.pub
# Скопируйте вывод и добавьте в ~/.ssh/authorized_keys на VPS
```
Сгенерирован ed25519 ключ, настроен keepalive.
## Устранение неполадок
### Проверка подключения
```bash
# Проверка доступности порта VPS
timeout 5 nc -z vps_ip 22
# Тестовое SSH подключение
ssh -p порт пользователь@vps_ip "echo 'Тест успешен'"
```
### Просмотр логов
```bash
# Логи мониторинга
tail -f /var/log/ssh_tunnel/monitor.log
# Системные логи служб
journalctl -u ssh-tunnel-* --since "1 hour ago"
# Логи конкретного туннеля
journalctl -u ssh-tunnel-имя_туннеля -f
```
### Перезапуск служб
```bash
# Перезапуск монитора
systemctl restart tunnel-monitor
# Перезапуск конкретного туннеля
systemctl restart ssh-tunnel-имя_туннеля
# Перезагрузка всех служб
systemctl daemon-reload
```
## Особенности автономной работы
### Автозапуск при загрузке
Все службы автоматически:
1. Запускаются после загрузки системы
2. Проверяют доступность сети
3. Восстанавливают туннели при их отсутствии
4. Мониторят соединения каждые 30 секунд
### Самовосстановление
При обнаружении обрыва соединения система:
1. Автоматически перезапускает туннель
2. Логирует событие для последующего анализа
3. Продолжает попытки подключения до успеха
- Логи: /tmp/ssh_tunnel_install*.log
- Status: systemctl status tunnel-monitor
- Журнал: journalctl -u tunnel-monitor -f
## Безопасность
### Рекомендации
1. **Используйте нестандартные порты** для SSH на VPS
2. **Настройте брандмауэр** на VPS для ограничения доступа
3. **Регулярно обновляйте** SSH ключи
4. **Используйте fail2ban** для защиты от bruteforce атак
5. **Ограничьте пользователей** которые могут подключаться через туннель
### Конфигурация безопасности
Система автоматически настраивает:
- SSH ключи без парольной фразы (для автономности)
- Отключение strict host checking (только для доверенных VPS)
- Настройку ServerAlive для детектирования обрывов
- Используйте нестандартные порты
- Настройте firewall
- Обновляйте ключи
## Поддерживаемые дистрибутивы
- **Debian/Ubuntu** (apt-based системы)
- **CentOS/RHEL 7/8** (yum-based системы)
- **Fedora** (dnf-based системы)
- **Rocky Linux / AlmaLinux**
- **Другие дистрибутивы** (с ручной установкой autossh)
## Разработка и вклад
### Структура репозитория
```
vps_ssh_tunel/
├── install_ssh_tunnel.sh # Основной установочный скрипт
├── README.md # Эта документация
└── (дополнительные скрипты) # Утилиты управления
```
### Сборка и тестирование
Для тестирования установки:
```bash
# В тестовой среде (Docker/LXC)
chmod +x install_ssh_tunnel.sh
./install_ssh_tunnel.sh
```
Debian/Ubuntu, CentOS/RHEL, Fedora и подобные.
## Лицензия
Проект распространяется под лицензией MIT. Подробности см. в файле LICENSE.
## Поддержка
Для получения помощи:
1. Проверьте логи в `/var/log/ssh_tunnel/`
2. Убедитесь в доступности VPS и корректности настроек
3. Проверьте настройки брандмауэра на VPS
4. Убедитесь, что SSH ключ добавлен в authorized_keys на VPS
---
**Примечание**: Эта система предназначена для использования в доверенных сетях и требует дополнительной настройки безопасности для использования в production-средах.
MIT.