246 lines
10 KiB
Markdown
246 lines
10 KiB
Markdown
# Автономный менеджер SSH туннелей (VPS SSH Tunnel Manager)
|
||
|
||
## Описание
|
||
|
||
Автономный менеджер SSH туннелей — это комплексное решение для создания и управления безопасными обратными SSH подключениями к вашему VPS. Система предназначена для работы на мини-ПК или серверах без постоянного мониторинга, с полной автономностью и самовосстановлением при обрывах соединения.
|
||
|
||
### Ключевые возможности
|
||
|
||
- **Полная автономность**: автоматический запуск и поддержка туннелей после перезагрузки
|
||
- **Самовосстановление**: автоматическое переподключение при обрывах соединения
|
||
- **Поддержка различных туннелей**:
|
||
- Прямые туннели (проброс локальных портов на VPS)
|
||
- Обратные туннели (доступ к ресурсам за VPS)
|
||
- Двунаправленная маршрутизация
|
||
- **Автоматическая настройка SSH**: генерация ключей, настройка конфигурации
|
||
- **Поддержка разных дистрибутивов**: Debian, Ubuntu, CentOS, RHEL, Fedora
|
||
- **Цветное меню управления**: интуитивный интерфейс с визуализацией статуса
|
||
- **Systemd интеграция**: службы и таймеры для мониторинга
|
||
|
||
## Быстрый старт
|
||
|
||
### Установка одной командой
|
||
|
||
```bash
|
||
sudo bash <(curl -s https://git.softuniq.eu/OpenDoor/vps_ssh_tunel/raw/branch/main/install_ssh_tunnel.sh)
|
||
```
|
||
|
||
## Детальная установка
|
||
|
||
### Предварительные требования
|
||
|
||
- Сервер с ОС Linux (Debian/Ubuntu, CentOS/RHEL или совместимые)
|
||
- Права суперпользователя (root/sudo)
|
||
- Доступ к удаленному VPS с открытым SSH портом
|
||
- Интернет-соединение для загрузки зависимостей
|
||
|
||
### Шаги установки
|
||
|
||
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
|
||
|
||
3. **Настройте туннели**:
|
||
После установки запустите менеджер туннелей:
|
||
```bash
|
||
tunnel-manager
|
||
```
|
||
|
||
## Управление туннелями
|
||
|
||
### Основные команды
|
||
|
||
```bash
|
||
# Запуск менеджера с цветным меню
|
||
tunnel-manager
|
||
|
||
# Проверка статуса служб мониторинга
|
||
systemctl status tunnel-monitor
|
||
|
||
# Просмотр логов в реальном времени
|
||
journalctl -u tunnel-monitor -f
|
||
|
||
# Просмотр логов установки
|
||
cat /tmp/ssh_tunnel_install.log
|
||
```
|
||
|
||
### Создание туннелей через меню
|
||
|
||
1. **Автономный туннель** (опция 1) — полная настройка с мониторингом
|
||
2. **Быстрый SSH туннель** (опция 2) — проброс порта 22 для удаленного доступа
|
||
3. **Обратный туннель** — доступ к ресурсам, находящимся за VPS
|
||
|
||
### Пример: проброс SSH доступа
|
||
|
||
При настройке быстрого туннеля система:
|
||
1. Пробрасывает локальный порт 22 на удаленный порт VPS (например, 10022)
|
||
2. Создает systemd службу для автономной работы
|
||
3. Настраивает автоматический мониторинг и восстановление
|
||
|
||
Для подключения используйте:
|
||
```bash
|
||
ssh -p 10022 ваш_пользователь@vps_ip
|
||
```
|
||
|
||
## Структура системы
|
||
|
||
### Установленные компоненты
|
||
|
||
| Путь | Назначение |
|
||
|------|------------|
|
||
| `/opt/ssh_tunnel_manager/` | Основные скрипты управления |
|
||
| `/etc/ssh_tunnel/` | Конфигурационные файлы туннелей |
|
||
| `/var/log/ssh_tunnel/` | Логи работы туннелей и мониторинга |
|
||
| `/root/.ssh/` | SSH ключи и конфигурация |
|
||
| `/etc/systemd/system/` | Systemd службы и таймеры |
|
||
|
||
### Systemd службы
|
||
|
||
- **tunnel-monitor.service** — мониторинг и восстановление туннелей
|
||
- **ssh-tunnel-*.service** — индивидуальные службы для каждого туннеля
|
||
- **tunnel-check.timer** — периодическая проверка соединений
|
||
|
||
## Настройка SSH
|
||
|
||
### Автоматически настроенные параметры
|
||
|
||
Система автоматически настраивает:
|
||
- Генерацию RSA ключа 4096 бит
|
||
- Конфигурацию SSH клиента для автономной работы
|
||
- Отключение строгой проверки хостов (для автоматического подключения)
|
||
- Настройку keepalive для поддержания соединения
|
||
- Поддержку как root, так и обычных пользователей
|
||
|
||
### Ручная настройка ключей
|
||
|
||
Если автоматическое копирование ключа не удалось, выполните:
|
||
|
||
```bash
|
||
# Показать публичный ключ
|
||
cat /root/.ssh/id_rsa.pub
|
||
|
||
# Скопируйте вывод и добавьте в ~/.ssh/authorized_keys на VPS
|
||
```
|
||
|
||
## Устранение неполадок
|
||
|
||
### Проверка подключения
|
||
|
||
```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. Продолжает попытки подключения до успеха
|
||
|
||
## Безопасность
|
||
|
||
### Рекомендации
|
||
|
||
1. **Используйте нестандартные порты** для SSH на VPS
|
||
2. **Настройте брандмауэр** на VPS для ограничения доступа
|
||
3. **Регулярно обновляйте** SSH ключи
|
||
4. **Используйте fail2ban** для защиты от bruteforce атак
|
||
5. **Ограничьте пользователей** которые могут подключаться через туннель
|
||
|
||
### Конфигурация безопасности
|
||
|
||
Система автоматически настраивает:
|
||
- SSH ключи без парольной фразы (для автономности)
|
||
- Отключение strict host checking (только для доверенных VPS)
|
||
- Настройку ServerAlive для детектирования обрывов
|
||
|
||
## Поддерживаемые дистрибутивы
|
||
|
||
- **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
|
||
```
|
||
|
||
## Лицензия
|
||
|
||
Проект распространяется под лицензией MIT. Подробности см. в файле LICENSE.
|
||
|
||
## Поддержка
|
||
|
||
Для получения помощи:
|
||
1. Проверьте логи в `/var/log/ssh_tunnel/`
|
||
2. Убедитесь в доступности VPS и корректности настроек
|
||
3. Проверьте настройки брандмауэра на VPS
|
||
4. Убедитесь, что SSH ключ добавлен в authorized_keys на VPS
|
||
|
||
---
|
||
|
||
**Примечание**: Эта система предназначена для использования в доверенных сетях и требует дополнительной настройки безопасности для использования в production-средах. |