architect/standards/processes/SSH_CONNECTION_PROTOCOL.md

Протокол подключения к серверам через SSH

Версия: 1.0.0
Дата: 2026-02-25


Проблема

Claude часто пытается использовать неправильного пользователя для SSH подключения, путая:
- MySQL пользователей (БД)
- SSH пользователей (сервер)


Правило

ПЕРЕД ЛЮБЫМ SSH ПОДКЛЮЧЕНИЕМ:

  1. Найти файл с инфраструктурой проекта
  2. Прочитать CONNECTION.md или .credentials.md
  3. Использовать только указанного SSH пользователя

Алгоритм

ЗАПРОС: "подключись к серверу lideravto"

ШАГ 1: Найти инфру проекта
 Glob: projects/org/lideravto/**/CONNECTION.md
 Read: projects/org/lideravto/it/infra/CONNECTION.md

ШАГ 2: Извлечь SSH credentials
 SSH User: lideravto (НЕ lideravto_wcs!)
 SSH Host: lideravto.beget.tech

ШАГ 3: Подключиться
 ssh lideravto@lideravto.beget.tech

ШАГ 4: Если ошибка "Permission denied"
 СТОП! Вернуться к ШАГ 1
 Проверить правильность пользователя
 НЕ пытаться перебирать варианты

Типичные ошибки

❌ НЕПРАВИЛЬНО

# Используется MySQL пользователь для SSH
ssh lideravto_wcs@lideravto.beget.tech  # ← MySQL user, НЕ SSH!

✅ ПРАВИЛЬНО

# Используется SSH пользователь
ssh lideravto@lideravto.beget.tech

Как различать пользователей

Тип Признак Пример Назначение
SSH Без суффикса или простое имя lideravto, root, ubuntu Подключение к серверу
MySQL С суффиксом _db, _cs, _wcs lideravto_wcs, lideravto_cs Доступ к базе данных
Приложение С суффиксом _app, _api app_user Внутри приложения

Структура credentials файлов

CONNECTION.md (инфра проекта)

## SSH доступ

| Параметр | Значение |
|----------|----------|
| Host | example.beget.tech |
| User | example |          ← SSH пользователь
| Password | См. .credentials.md |

## База данных

| Параметр | Значение |
|----------|----------|
| Host | localhost |
| User | example_db |        ← MySQL пользователь (ДРУГОЙ!)

.credentials.md (секретный файл)

## SSH BeGet

| Параметр | Значение |
|----------|----------|
| Host | example.beget.tech |
| User | example |          ← SSH пользователь
| Password | secret123 |

## База данных

| Параметр | Значение |
|----------|----------|
| User | example_db |        ← MySQL пользователь
| Password | dbpass456 |

Чеклист перед SSH

Перед выполнением ssh USER@HOST:


Примеры проектов

lideravto

Тип User Использование
SSH lideravto ssh lideravto@lideravto.beget.tech
MySQL (work) lideravto_wcs mysql -u lideravto_wcs -p lideravto_wcs
MySQL (prod) lideravto_cs mysql -u lideravto_cs -p lideravto_cs

Документация: projects/org/lideravto/it/infra/CONNECTION.md


Правило документирования

В каждом проекте ОБЯЗАТЕЛЬНО должно быть:

projects/org/{project}/
├── .credentials.md           ← Секретный файл с паролями
└── it/infra/
    ├── CLAUDE.md             ← Обзор инфры + ссылка на CONNECTION.md
    └── CONNECTION.md         ← Главный документ (SSH, MySQL, пути)

В CONNECTION.md должны быть разделы:
1. SSH доступ к хостингу
2. Базы данных (отдельно для каждой)
3. Структура директорий на сервере
4. Пути к скриптам
5. Проверка доступности


Действия при ошибке "Permission denied"

ЕСЛИ получил Permission denied при SSH:

1. СТОП  не пытаться другие варианты
2. Прочитать CONNECTION.md заново
3. Проверить:
   - Используется ли правильный пользователь (из раздела SSH)?
   - Не перепутал ли с MySQL пользователем?
4. Если в CONNECTION.md ошибка  сообщить пользователю
5. НЕ пытаться перебирать: lideravto_wcs, lideravto_cs и т.д.

Обновление документации

После обнаружения ошибки в credentials:

  1. Обновить CONNECTION.md с правильными данными
  2. Обновить .credentials.md если нужно
  3. Добавить историю изменений в CONNECTION.md
  4. Проверить работоспособность новых credentials
  5. Зафиксировать в git (кроме .credentials.md!)

См. также:
- architect/standards/SECURITY_CREDENTIALS.md — работа с credentials
- architect/standards/processes/PROJECT_BOOTSTRAP.md — структура проекта


Версия: 1.0.0
Дата: 2026-02-25