Claude Code на удалённом сервере по SSH: установка, ключ и tmux
Claude Code — терминальный агент, ему не нужен графический интерфейс. Разбираем установку на сервер, авторизацию ключом Zukko, работу в tmux и защиту ключа.
4 мин · · разработка · агенты
Claude Code на сервере по SSH удобен, когда проект живёт на удалённой машине: dev-сервер с данными, мощная машина для сборки, VPS без графики. Claude Code — терминальный агент, поэтому SSH-подключения ему хватает. Ниже — установка по официальной документации (страница Advanced setup), авторизация ключом без браузера, работа в tmux и защита ключа.
Требования к серверу
По документации Claude Code поддерживает Ubuntu 20.04+, Debian 10+ и Alpine Linux 3.19+. Нужно от 4 ГБ оперативной памяти, процессор x64 или ARM64 и доступ в интернет. Node.js для официального установщика не нужен: он ставит нативный бинарник.
Установка Claude Code на сервер
Подключитесь по SSH обычным пользователем, не root, и выполните:
curl -fsSL https://claude.ai/install.sh | bashУстановщик кладёт команду claude в ~/.local/bin. Если оболочка её не находит, добавьте каталог в PATH:
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrcПроверьте установку:
claude --version
claude doctorКоманда называется именно claude. Отдельного бинарника claude-code нет.
Есть и альтернативы. Для Debian/Ubuntu, Fedora/RHEL и Alpine Anthropic публикует подписанные репозитории apt, dnf и apk (инструкция — в разделе Install with Linux package managers документации). Если на сервере уже стоит Node.js, подойдёт npm install -g @anthropic-ai/claude-code, без sudo. Версия из официального установщика обновляется сама. Версии из пакетных менеджеров обновляются вместе с системой.
Авторизация ключом Zukko без браузера
На сервере обычно нет браузера для входа в аккаунт, и он не нужен. Если задана переменная ANTHROPIC_AUTH_TOKEN, Claude Code использует её. По документации она стоит выше входа через подписку и отправляется заголовком Authorization: Bearer.
Добавьте в ~/.bashrc:
export ANTHROPIC_BASE_URL="https://api.zukko.pro"
export ANTHROPIC_AUTH_TOKEN="fetch_ваш_ключ"
export ANTHROPIC_MODEL="claude-sonnet-5"Адрес без /v1, Claude Code добавляет его сам. Второй вариант — блок env в ~/.claude/settings.json. Так переменные видны только Claude Code:
{
"env": {
"ANTHROPIC_BASE_URL": "https://api.zukko.pro",
"ANTHROPIC_AUTH_TOKEN": "fetch_ваш_ключ",
"ANTHROPIC_MODEL": "claude-sonnet-5"
}
}Закройте файл от других пользователей сервера: chmod 600 ~/.claude/settings.json (или ~/.bashrc). Файл .env в папке проекта Claude Code сам не читает, поэтому ключ туда класть бесполезно.
Проверка подключения и список моделей:
curl -s https://api.zukko.pro/v1/models -H "Authorization: Bearer $ANTHROPIC_AUTH_TOKEN"Подробная инструкция — в документации Zukko по Claude Code.
Как работать с Claude Code на сервере
Перейдите в папку проекта и запустите интерактивную сессию:
cd /var/www/myapp
claudeДальше задачи пишутся обычным языком: «найди, где обрабатываются ошибки API, и добавь логирование», «почему падает этот тест». Специальных подкоманд вроде analyze или edit у Claude Code нет. Агент сам читает файлы, предлагает правки и запускает команды, спрашивая разрешение.
Для разовых задач без интерактива есть режим -p:
claude -p "Summarize what changed in the last 5 commits" --allowedTools "Bash(git log *),Bash(git diff *)"Долгие сессии: tmux
При обрыве SSH-соединения процесс в терминале завершится. Чтобы сессия пережила обрыв, запускайте Claude Code внутри tmux:
tmux new -s claude
cd /var/www/myapp && claudeОтключиться, не останавливая работу: Ctrl+B, затем D. Вернуться:
tmux attach -t claudeСписок сессий — tmux ls. Для нескольких проектов заведите несколько tmux-сессий с разными именами.
nohup для интерактивного режима не подходит, ему нужен терминал. Для фоновых разовых задач используйте nohup claude -p "..." > result.txt 2>&1 &.
Если сессия всё же оборвалась, беседу можно продолжить: claude --continue открывает последнюю беседу в текущей папке, claude --resume показывает список сессий.
Безопасность на сервере
- Отдельный ключ. Создайте в кабинете Zukko ключ только для этого сервера. Задайте дневной и месячный лимит и список разрешённых моделей (например, только
claude-sonnet-5). Если ключ утечёт, ущерб ограничен лимитом, а сам ключ отзывается в кабинете. - Не запускайте от root. Агент выполняет команды с правами вашего пользователя.
- Разрешения. Не используйте
--dangerously-skip-permissionsна сервере с ценными данными. Опасные команды запретите правиламиpermissions.denyв~/.claude/settings.jsonили в настройках проекта. - Не коммитьте ключ. Если он попал в git, удалите его в кабинете и создайте новый.
Расход и баланс
Баланс и историю расходов смотрите в кабинете (обзор, раздел «Использование») или через API — см. описание эндпоинта баланса. В Zukko claude-sonnet-5 стоит $0.3 за 1M входных и $0.3 за 1M выходных токенов. Сессия на 1 000 000 входных и 50 000 выходных токенов обойдётся в 1 × $0.3 + 0.05 × $0.3 = $0.315. Оговорка про кэш: у вендора чтение из кэша промптов стоит около 10% входной цены, а в Zukko кэшированные токены оплачиваются по обычной входной цене. Для агента с большим повторяющимся контекстом реальная разница с официальным прайсом меньше, чем при прямом сравнении цен.
Если модель выключена, шлюз вернёт HTTP 503 с кодом model_disabled. Выберите другую модель из GET https://api.zukko.pro/v1/models (или со страницы «Модели» в кабинете) и обновите ANTHROPIC_MODEL.
Частые вопросы
Нужно ли входить в аккаунт Anthropic на сервере?
Нет. При заданной ANTHROPIC_AUTH_TOKEN Claude Code авторизуется ключом Zukko.
Как посмотреть подробный лог?
Запустите claude --debug-file /tmp/claude.log и смотрите файл в соседнем окне tmux: tail -f /tmp/claude.log.
Можно ли запустить несколько сессий на одном сервере?
Да, в разных tmux-сессиях или окнах. У каждой свой контекст, расход идёт с ключа, заданного в окружении.
Как обновить Claude Code на сервере?
Версия из официального установщика обновляется автоматически, вручную — claude update. Для apt, dnf и apk используйте обычное обновление пакетов системы.
zukko
Платите в 25×
меньше
за Claude Code & ChatGPT
Один ключ fetch_* и base URL api.zukko.pro — в Cursor, Claude Code, Codex и любом SDK.
Похожие статьи
- Промпт-инъекция: что это и как защитить бота и агентаОбъясняем, как работает промпт-инъекция через пользовательский ввод и чужие документы, и какие меры снижают ущерб: изоляция данных, права инструментов, лимиты ключа.
- Claude Code YOLO: режимы разрешений и работа без подтвержденийОтдельного режима YOLO в Claude Code нет, зато есть шесть режимов разрешений и гибкие правила. Разбираем, как перестать нажимать «Да» и не лишиться файлов.
- Claude Code: чек-лист лучших практик для ежедневной работыПривычки, которые делают работу с Claude Code предсказуемой: короткий CLAUDE.md, план перед правками, мелкие задачи, проверка результата и контроль расхода.
- MCP-сервер на Java: минимальный пример с одним инструментомПишем минимальный MCP-сервер на Java с одним инструментом, регистрируем его в Claude Code и учимся находить причину, если агент его не видит.