Добавить README.md
This commit is contained in:
246
README.md
Normal file
246
README.md
Normal file
@@ -0,0 +1,246 @@
|
|||||||
|
# Автономный менеджер 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-средах.
|
||||||
Reference in New Issue
Block a user