# Автономный менеджер 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-средах.