Основные исправления:
Исправлена проблема с бесконечным циклом в функции safe_read - добавлен лимит попыток (по умолчанию 3)
Убраны конфликты с safe_read - в основном блоке ввода VPS данных теперь используется обычный read
Добавлена обработка ошибок для каждой функции с корректным выходом при неудаче
Исправлена логика проверки ввода - обязательные поля проверяются явно
Добавлен глобальный обработчик ошибок (trap) для отлова непредвиденных ошибок
Улучшена структура цикла ввода VPS данных - теперь есть ограниченное количество попыток
Что исправлено конкретно:
Если пользователь нажимает Enter на пустом поле, теперь будет только 3 попытки, после чего скрипт завершится
Все сообщения об ошибках теперь завершают скрипт или дают выбор продолжить
Убраны конфликты имен переменных между функциями
Улучшена обработка всех возможных ошибок
Автономный менеджер SSH туннелей (VPS SSH Tunnel Manager)
Описание
Автономный менеджер SSH туннелей — это комплексное решение для создания и управления безопасными обратными SSH подключениями к вашему VPS. Система предназначена для работы на мини-ПК или серверах без постоянного мониторинга, с полной автономностью и самовосстановлением при обрывах соединения.
Ключевые возможности
- Полная автономность: автоматический запуск и поддержка туннелей после перезагрузки
- Самовосстановление: автоматическое переподключение при обрывах соединения
- Поддержка различных туннелей:
- Прямые туннели (проброс локальных портов на VPS)
- Обратные туннели (доступ к ресурсам за VPS)
- Двунаправленная маршрутизация
- Автоматическая настройка SSH: генерация ключей, настройка конфигурации
- Поддержка разных дистрибутивов: Debian, Ubuntu, CentOS, RHEL, Fedora
- Цветное меню управления: интуитивный интерфейс с визуализацией статуса
- Systemd интеграция: службы и таймеры для мониторинга
Быстрый старт
Установка одной командой
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 портом
- Интернет-соединение для загрузки зависимостей
Шаги установки
-
Запустите установочный скрипт:
curl -s https://git.softuniq.eu/OpenDoor/vps_ssh_tunel/raw/branch/main/install_ssh_tunnel.sh | sudo bash -
Следуйте интерактивным подсказкам:
- Введите данные вашего VPS (IP-адрес, порт, пользователь)
- Система автоматически определит дистрибутив и установит зависимости
- Будет сгенерирован SSH ключ и скопирован на VPS
-
Настройте туннели: После установки запустите менеджер туннелей:
tunnel-manager
Управление туннелями
Основные команды
# Запуск менеджера с цветным меню
tunnel-manager
# Проверка статуса служб мониторинга
systemctl status tunnel-monitor
# Просмотр логов в реальном времени
journalctl -u tunnel-monitor -f
# Просмотр логов установки
cat /tmp/ssh_tunnel_install.log
Создание туннелей через меню
- Автономный туннель (опция 1) — полная настройка с мониторингом
- Быстрый SSH туннель (опция 2) — проброс порта 22 для удаленного доступа
- Обратный туннель — доступ к ресурсам, находящимся за VPS
Пример: проброс SSH доступа
При настройке быстрого туннеля система:
- Пробрасывает локальный порт 22 на удаленный порт VPS (например, 10022)
- Создает systemd службу для автономной работы
- Настраивает автоматический мониторинг и восстановление
Для подключения используйте:
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, так и обычных пользователей
Ручная настройка ключей
Если автоматическое копирование ключа не удалось, выполните:
# Показать публичный ключ
cat /root/.ssh/id_rsa.pub
# Скопируйте вывод и добавьте в ~/.ssh/authorized_keys на VPS
Устранение неполадок
Проверка подключения
# Проверка доступности порта VPS
timeout 5 nc -z vps_ip 22
# Тестовое SSH подключение
ssh -p порт пользователь@vps_ip "echo 'Тест успешен'"
Просмотр логов
# Логи мониторинга
tail -f /var/log/ssh_tunnel/monitor.log
# Системные логи служб
journalctl -u ssh-tunnel-* --since "1 hour ago"
# Логи конкретного туннеля
journalctl -u ssh-tunnel-имя_туннеля -f
Перезапуск служб
# Перезапуск монитора
systemctl restart tunnel-monitor
# Перезапуск конкретного туннеля
systemctl restart ssh-tunnel-имя_туннеля
# Перезагрузка всех служб
systemctl daemon-reload
Особенности автономной работы
Автозапуск при загрузке
Все службы автоматически:
- Запускаются после загрузки системы
- Проверяют доступность сети
- Восстанавливают туннели при их отсутствии
- Мониторят соединения каждые 30 секунд
Самовосстановление
При обнаружении обрыва соединения система:
- Автоматически перезапускает туннель
- Логирует событие для последующего анализа
- Продолжает попытки подключения до успеха
Безопасность
Рекомендации
- Используйте нестандартные порты для SSH на VPS
- Настройте брандмауэр на VPS для ограничения доступа
- Регулярно обновляйте SSH ключи
- Используйте fail2ban для защиты от bruteforce атак
- Ограничьте пользователей которые могут подключаться через туннель
Конфигурация безопасности
Система автоматически настраивает:
- 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 # Эта документация
└── (дополнительные скрипты) # Утилиты управления
Сборка и тестирование
Для тестирования установки:
# В тестовой среде (Docker/LXC)
chmod +x install_ssh_tunnel.sh
./install_ssh_tunnel.sh
Лицензия
Проект распространяется под лицензией MIT. Подробности см. в файле LICENSE.
Поддержка
Для получения помощи:
- Проверьте логи в
/var/log/ssh_tunnel/ - Убедитесь в доступности VPS и корректности настроек
- Проверьте настройки брандмауэра на VPS
- Убедитесь, что SSH ключ добавлен в authorized_keys на VPS
Примечание: Эта система предназначена для использования в доверенных сетях и требует дополнительной настройки безопасности для использования в production-средах.