infra/@beget-kondurov.server/management/ISSUE-001-SSH-ACCESS.md

ISSUE-001: Нет SSH доступа с сервера Claude Code к Beget

Дата создания: 2025-11-13
Дата решения: 2025-11-14
Статус: ✅ RESOLVED
Приоритет: HIGH
Проект: @remote-beget-kondurov
Тикет Beget: #2716204 (закрыт)


📋 Описание проблемы

Невозможно подключиться по SSH к серверу kondurov.beget.tech с сервера Claude Code (91.218.142.168).

Симптомы

# Попытка подключения
ssh kondurov@kondurov.beget.tech

# Результат
ssh: connect to host kondurov.beget.tech port 22: Connection timed out

Проверка порта

nc -zv -w5 kondurov.beget.tech 22
# Result: Connection timed out

🔍 Причина

Beget блокирует подключения с серверных IP адресов (дата-центры, VPS, dedicated servers) как защита от автоматизации и ботов.

Проверка

  1. ✅ SSH доступ включен в панели Beget (проверено автоматизацией)
  2. ✅ Логин/пароль верные (успешный вход в панель)
  3. ❌ В панели Beget НЕТ опции SSH IP whitelist
  4. ❌ IP сервера 91.218.142.168 определяется как серверный

Скриншоты


✅ Возможные решения

Вариант 1: VPN на сервере Claude Code ⭐ (РЕКОМЕНДУЕТСЯ)

Описание: Установить VPN клиент на сервере 91.218.142.168, чтобы выходить через "домашний" IP.

Преимущества:
- Полный доступ к SSH с сервера Claude Code
- Автоматизация работает
- Можно использовать для других задач

Недостатки:
- Требует настройки VPN
- Нужен VPN сервис с "резидентным" IP

Реализация:

# 1. Установить WireGuard или OpenVPN
apt install -y wireguard

# 2. Настроить конфиг от VPN провайдера
# 3. Подключиться
wg-quick up wg0

# 4. Проверить IP
curl ifconfig.me

# 5. Подключиться к Beget
ssh kondurov@kondurov.beget.tech

Статус: ⏳ Pending (нужен VPN сервис)


Вариант 2: SSH Proxy через домашний компьютер

Описание: Использовать домашний/офисный компьютер как прокси.

Преимущества:
- Не нужен платный VPN
- Использует существующий доступ

Недостатки:
- Компьютер должен быть всегда онлайн
- Нужен статичный IP или DynamicDNS

Реализация:

# На сервере Claude Code в ~/.ssh/config
Host beget-kondurov
    HostName kondurov.beget.tech
    User kondurov
    ProxyJump user@home-computer-ip

Статус: ⏳ Pending (нужен доступ к домашнему компьютеру)


Вариант 3: Обратный SSH туннель

Описание: С домашнего компьютера создать туннель к серверу Claude Code.

Преимущества:
- Работает без VPN
- Гибкая настройка

Недостатки:
- Сложная конфигурация
- Требует постоянного подключения с домашнего компьютера

Реализация:

# С домашнего компьютера
ssh -R 2222:kondurov.beget.tech:22 user@91.218.142.168

# На сервере Claude Code
ssh -p 2222 kondurov@localhost

Статус: ⏳ Pending


Вариант 4: Работа через локальный компьютер (временное решение)

Описание: Claude генерирует скрипты, пользователь запускает их локально.

Преимущества:
- Работает сразу
- Не требует настройки

Недостатки:
- ❌ Нет автоматизации
- ❌ Требует ручного выполнения команд
- ❌ Claude Code не может напрямую управлять сервером

Статус: ✅ Текущий workaround


🎯 Рекомендация

Вариант 1 (VPN) - лучшее долгосрочное решение.

VPN сервисы с резидентными IP:

  1. Windscribe - есть residential IP
  2. TorGuard - dedicated residential IP
  3. Private Internet Access - residential опции
  4. Tailscale - если есть домашний сервер

📊 Текущий статус

Доступ:
- ✅ SSH с сервера Claude Code → Beget: ДА (IP разблокирован 2025-11-14)
- ✅ SSH с домашнего компьютера → Beget: ДА
- ✅ Web панель Beget: ДА (автоматизация работает)
- ✅ Сайт pirotehnika.spb.ru: ДА (доступен с сервера)

Решение:
IP адрес 91.218.142.168 добавлен в whitelist службой поддержки Beget


📝 История

2025-11-13 19:58:
- Обнаружена проблема при попытке SSH подключения
- Проверка: порт 22 timeout
- Тест с nc/telnet: Connection timed out

2025-11-13 20:05:
- Успешная автоматизация логина в панель Beget
- Проверка настроек SSH: доступ включен
- Обнаружено: нет опции IP whitelist в панели

2025-11-13 20:15:
- Создан тикет
- Определены 4 возможных решения
- Рекомендация: VPN

2025-11-13 20:09:
- ✅ Тикет отправлен в поддержку Beget (автоматически)
- Запрошено добавление IP 91.218.142.168 в SSH whitelist
- Скриншоты подтверждения сохранены в /tmp/beget_ticket_*.png
- Ожидание ответа от поддержки

2025-11-14 02:06:
- 🎉 Beget разблокировал IP 91.218.142.168!
- ✅ SSH доступ работает: sshpass -p "$BEGET_PASSWORD" ssh kondurov@kondurov.beget.tech
- ✅ Сайт доступен: curl https://pirotehnika.spb.ru → HTTP 200
- ✅ Создан файл с правилами работы с shared hosting: platform/.claude/SHARED-HOSTING-RULES.md
- ✅ Тикет закрыт, проблема решена


🔗 Связанные файлы


⏭️ Следующие шаги

  1. [x] ~~Выбрать решение~~ → Beget разблокировал IP
  2. [x] ~~Тест подключения~~ → SSH работает
  3. [x] ~~Обновить документацию~~ → Создан SHARED-HOSTING-RULES.md
  4. [x] ~~Закрыть тикет~~ → Тикет закрыт

Все задачи выполнены!


Создано: 2025-11-13 20:15
Решено: 2025-11-14 02:06
Время решения: ~6 часов (ожидание ответа поддержки)