Позволить ИИ Сделать Это
Мне нужен был dev-сервер: VM с SSH-доступом и установленными инструментами разработки. Я описал Claude Code, что мне нужно, и позволил ему заняться настройкой.
Промпт
Я попросил VM на Vultr с 8 ядрами и 32ГБ RAM, доступную только через Tailscale, с постоянными сессиями, которые переживают обрывы сети.
Что Построил Claude Code
1. Провизионировал VM через API Vultr
Он создал экземпляр 8 ядер/32ГБ с Ubuntu, дождался IP, затем подключился по SSH как root.
2. Укрепил SSH
Port 49152 # Случайный высокий порт
PermitRootLogin no
PasswordAuthentication no
ListenAddress 100.x.x.x # Только интерфейс Tailscale
Только аутентификация по ключу, слушает только на интерфейсе Tailscale.
3. Настроил три уровня файрвола
- UFW: Запретить весь входящий трафик кроме подсети Tailscale
- fail2ban: Автоматически банить IP после неудачных попыток входа
- Файрвол Vultr: Блокировать всё на уровне гипервизора
4. Установил Tailscale с включённым SSH
curl -fsSL https://tailscale.com/install.sh | sh
tailscale up --ssh --authkey=$TAILSCALE_KEY
Это создаёт второй SSH-путь через встроенный SSH-сервер Tailscale, независимый от OpenSSH.
5. Установил dev-стек
Node.js (через nvm), Python (через pyenv), Docker и общие инструменты. Настроил Docker для работы без sudo.
6. Настроил постоянные сессии с tmux
Скрипт запуска, который автоматически переподключается к существующей сессии, чтобы обрывы сети не убивали работающие процессы.
7. Создал локальные скрипты управления
Скрипты dev-start и dev-stop на моём ноутбуке, которые запускают и останавливают VM через API Vultr.
Блокировка
После завершения Claude Code проверил, что вход под root отключён, попытавшись подключиться по SSH как root. Вход не удался. fail2ban заметил неудачные попытки и забанил нас.
Claude Code настроил SSH Tailscale как вторичный путь. Он использовал tailscale ssh, чтобы вернуться, и выполнил:
fail2ban-client set sshd unbanip 100.x.x.x
Настройка
Вам понадобится:
- Claude Code (или похожий ИИ с использованием инструментов)
- Учётная запись облачного провайдера (Vultr, DigitalOcean, AWS и т.д.)
- Учётная запись Tailscale
Храните API-ключи как переменные окружения и ссылайтесь на них по имени (например, $VULTR_API_KEY), чтобы секреты не появлялись в разговоре.
Пример промпта:
Создай VM с 8 ядрами на Vultr, заблокируй её так, чтобы она была доступна только через Tailscale, настрой Node/Python/Docker и дай мне скрипты для запуска и остановки.