Запуск Claude Code на VPS: установка, защита и сохранение сессий
Настройте Claude Code на удалённом Linux-сервере с headless-аутентификацией, сохранением сессий через tmux и усилением безопасности. Каждая команда проверена.
Запуск Claude Code на VPS
Claude Code — терминальный AI-агент для написания кода. Он читает вашу кодовую базу, редактирует файлы, выполняет команды и создаёт функциональность по описаниям на естественном языке. На VPS вы получаете постоянного агента, который работает 24/7 и доступен с любого устройства по SSH.
Это руководство проведёт вас от свежего Ubuntu VPS до рабочей установки Claude Code с сохранением сессий. Каждый шаг включает команду проверки, чтобы убедиться в успехе.
Что Claude Code требует от VPS?
Claude Code отправляет ваши запросы на серверы Anthropic для обработки. На VPS хранятся только файлы проекта, инструменты разработки и сам процесс Claude Code. GPU или мощное железо не нужны.
| Требование | Минимум | Рекомендуется |
|---|---|---|
| ОС | Ubuntu 20.04 LTS | Ubuntu 24.04 LTS |
| RAM | 4 ГБ | 8 ГБ |
| Диск | 20 ГБ SSD | 40 ГБ NVMe |
| CPU | 2 vCPU | 4 vCPU |
| Сеть | Стабильный интернет | Соединение с низкой задержкой |
| Зависимости | Нет (нативный установщик) | git, ripgrep (встроены) |
Нативный установщик включает ripgrep и не требует зависимостей вроде Node.js. VPS с 4 ГБ справится с Claude Code и проектом среднего размера. Для крупных монорепозиториев или дополнительных сервисов берите 8 ГБ.
Требование к аккаунту: Claude Code работает с подпиской Claude Pro, Max, Teams, Enterprise или Console. Бесплатный план Claude.ai не включает доступ к Claude Code.
Как защитить VPS перед установкой Claude Code?
Заблокируйте сервер прежде, чем что-либо устанавливать. VPS начинает получать автоматические brute-force атаки через считанные минуты после запуска. Эти шаги создают пользователя без root-привилегий, включают аутентификацию по SSH-ключу, настраивают файрвол и активируют автоматические обновления безопасности.
Если у вас уже защищённый сервер, переходите к Как установить Claude Code на Linux-сервер?. Подробнее о каждом шаге безопасности: .
Создание пользователя без root-привилегий
Подключитесь к серверу по SSH как root, затем создайте пользователя с правами sudo:
ssh root@YOUR_SERVER_IP
adduser claude
usermod -aG sudo claude
Скопируйте SSH-ключ новому пользователю для входа без пароля:
mkdir -p /home/claude/.ssh
cp /root/.ssh/authorized_keys /home/claude/.ssh/authorized_keys
chown -R claude:claude /home/claude/.ssh
chmod 700 /home/claude/.ssh
chmod 600 /home/claude/.ssh/authorized_keys
Убедитесь, что можете войти под новым пользователем из второго терминала, прежде чем продолжать. Не закрывайте root-сессию:
ssh claude@YOUR_SERVER_IP
Вы должны увидеть приглашение claude@yourserver. Если всё работает, продолжайте.
Отключение аутентификации по паролю
Отредактируйте конфигурацию SSH, чтобы заблокировать вход по паролю:
sudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
Перезапустите SSH и проверьте настройки:
sudo systemctl restart ssh
sudo sshd -T | grep -E 'passwordauthentication|permitrootlogin'
Ожидаемый вывод (порядок может отличаться):
permitrootlogin no
passwordauthentication no
Настройка файрвола
UFW (Uncomplicated Firewall) блокирует весь входящий трафик кроме разрешённого. На некоторых минимальных образах VPS его нужно сначала установить: sudo apt install -y ufw.
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw enable
Проверьте правила:
sudo ufw status
Ожидаемый вывод:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Установка fail2ban
fail2ban блокирует IP-адреса после повторных неудачных попыток SSH-входа:
sudo apt update && sudo apt install -y fail2ban
Создайте локальную конфигурацию, чтобы настройки сохранялись при обновлении пакета:
sudo tee /etc/fail2ban/jail.local > /dev/null << 'EOF'
[sshd]
enabled = true
port = ssh
filter = sshd
maxretry = 5
bantime = 3600
findtime = 600
EOF
Активируйте и проверьте:
sudo systemctl enable --now fail2ban
sudo systemctl status fail2ban
Обратите внимание: в выводе должно быть active (running). Флаг enable --now запускает fail2ban сразу и обеспечивает автозагрузку при перезапуске.
sudo fail2ban-client status sshd
Покажет, что jail активен и заблокированных IP пока 0 (ожидаемо на новой установке).
Включение автоматических обновлений безопасности
Unattended-upgrades устраняет уязвимости без ручного вмешательства:
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
Выберите "Yes" при запросе. Проверьте статус:
sudo systemctl status unattended-upgrades
В выводе должно быть active (running).
Как установить Claude Code на Linux-сервер?
Нативный установщик — рекомендуемый способ. Не требует зависимостей, обновляется автоматически в фоне, работает на любом поддерживаемом дистрибутиве Linux. Установка через npm устарела.
Запустите установщик от обычного пользователя (не root):
curl -fsSL https://claude.ai/install.sh | bash
Это официальный установщик Anthropic. Если хотите проверить перед запуском, в документации по установке есть SHA256-контрольные суммы и информация о подписи кода.
Установщик помещает бинарник в ~/.local/bin/claude и добавляет его в PATH. Откройте новый shell или перезагрузите профиль:
source ~/.bashrc
Проверьте установку:
claude --version
Должен показать версию вида 2.x.x. Запустите встроенную диагностику:
claude doctor
Проверяет конфигурацию системы, сетевое соединение и статус аутентификации. На этом этапе аутентификация будет отображаться как незавершённая. Так и должно быть.
Как аутентифицировать Claude Code на headless VPS?
Claude Code обычно открывает браузер для OAuth-входа. На headless-сервере без GUI нужен другой подход. Есть два варианта в зависимости от типа аккаунта.
Вариант А: API-ключ из Claude Console
Если у вас аккаунт Claude Console (оплата через API), установите переменную окружения ANTHROPIC_API_KEY. Самый простой способ для headless-серверов.
Сгенерируйте API-ключ на console.anthropic.com. Затем сохраните его на VPS:
sudo mkdir -p /etc/claude-code
sudo tee /etc/claude-code/env > /dev/null << 'EOF'
ANTHROPIC_API_KEY=sk-ant-api03-your-key-here
EOF
sudo chmod 600 /etc/claude-code/env
sudo chown claude:claude /etc/claude-code/env
Что это делает: создаёт отдельный файл с ограниченными правами (только ваш пользователь может его прочитать) вместо хранения секретов в .bashrc, где они попадают в историю shell и доступны другим процессам.
Загрузите его в профиль shell. Добавьте строку в ~/.bashrc:
echo 'set -a; source /etc/claude-code/env; set +a' >> ~/.bashrc
source ~/.bashrc
Проверьте, что ключ загружен:
echo $ANTHROPIC_API_KEY | head -c 15
Должно показать sk-ant-api03-xx (первые 15 символов ключа).
Вариант Б: OAuth-токен из подписки Claude
Если у вас подписка Claude Pro или Max (не Console), сгенерируйте OAuth-токен на машине с браузером, затем перенесите на VPS.
На вашей локальной машине (с браузером):
claude setup-token
Откроется браузер для OAuth-аутентификации, и будет выдан долгосрочный токен, начинающийся с sk-ant-oat01-. Токен действителен в течение года.
Скопируйте токен. Затем на VPS сохраните его тем же способом:
sudo tee /etc/claude-code/env > /dev/null << 'EOF'
CLAUDE_CODE_OAUTH_TOKEN=sk-ant-oat01-your-token-here
EOF
sudo chmod 600 /etc/claude-code/env
sudo chown claude:claude /etc/claude-code/env
Также нужно создать ~/.claude.json, чтобы пропустить мастер настройки:
cat > ~/.claude.json << 'EOF'
{
"hasCompletedOnboarding": true
}
EOF
chmod 600 ~/.claude.json
Загрузите в профиль shell:
echo 'set -a; source /etc/claude-code/env; set +a' >> ~/.bashrc
source ~/.bashrc
Проверка аутентификации
Проверьте, что Claude Code может связаться с серверами Anthropic:
claude -p "Say hello in exactly 5 words"
Флаг -p выполняет одиночный запрос без входа в интерактивный режим. Если видите приветствие из пяти слов, аутентификация работает. При ошибке аутентификации проверьте переменную окружения: env | grep -E 'ANTHROPIC_API_KEY|CLAUDE_CODE_OAUTH_TOKEN'.
Как сохранить Claude Code запущенным после отключения SSH?
Используйте tmux. Он создаёт терминальные сессии, которые живут на сервере независимо от SSH-соединения. Закройте ноутбук, улетите в другую страну, подключитесь по SSH с телефона. Сессия на месте, ровно там, где вы её оставили.
Установка tmux
sudo apt install -y tmux
Проверка:
tmux -V
Настройка tmux для Claude Code
Создайте .tmux.conf с настройками для длительных сессий:
cat > ~/.tmux.conf << 'EOF'
# Increase scrollback buffer (default is 2000 lines)
set -g history-limit 50000
# Enable mouse support for scrolling and pane selection
set -g mouse on
# Start window numbering at 1
set -g base-index 1
# Reduce escape time for faster key response
set -sg escape-time 10
# Status bar with session name and time
set -g status-right '%H:%M %d-%b'
# Keep sessions alive if the shell exits unexpectedly
set -g remain-on-exit on
EOF
Запуск сессии Claude Code
Создайте именованную tmux-сессию и запустите Claude Code в ней:
tmux new -s claude
Вы внутри tmux-сессии с именем "claude". Запустите Claude Code:
cd ~/your-project
claude
Claude Code работает. Чтобы отсоединиться от сессии (оставить её работать в фоне), нажмите:
Ctrl+B, затем D
Вы вернулись к обычному SSH-приглашению. Claude Code продолжает работать в tmux.
Краткий справочник tmux
| Действие | Команда |
|---|---|
| Создать именованную сессию | tmux new -s claude |
| Отсоединиться от сессии | Ctrl+B, затем D |
| Список сессий | tmux ls |
| Подключиться к сессии | tmux attach -t claude |
| Завершить сессию | tmux kill-session -t claude |
| Прокрутка вверх | Ctrl+B, затем [, затем стрелки |
| Выход из режима прокрутки | q |
Как подключиться к сессии Claude Code с другого устройства?
Подключитесь по SSH к VPS с любого устройства и присоединитесь:
ssh claude@YOUR_SERVER_IP
tmux attach -t claude
Сессия Claude Code на месте. История диалога, контекст файлов и запущенные задачи сохранены. Работает с ноутбука, телефона (через SSH-приложение вроде Termius) или другого сервера.
Если сессия упала или была завершена, tmux attach не сработает. Создайте новую:
tmux ls
Если сессий нет, создайте новую: tmux new -s claude.
Как ограничить действия Claude Code на сервере?
У Claude Code есть система разрешений, контролирующая доступные инструменты. По умолчанию он спрашивает подтверждение перед выполнением bash-команд или редактированием файлов. Можно заранее одобрить безопасные команды и заблокировать опасные через .claude/settings.json в директории проекта.
Никогда не используйте --dangerously-skip-permissions на реальном сервере. Это отключает все проверки и позволяет Claude Code выполнять любую команду без подтверждения.
Настройка белого списка разрешений
Создайте файл настроек на уровне проекта:
cd ~/your-project
mkdir -p .claude
cat > .claude/settings.json << 'EOF'
{
"permissions": {
"allow": [
"Bash(npm run *)",
"Bash(npm test *)",
"Bash(git status)",
"Bash(git diff *)",
"Bash(git log *)",
"Bash(git add *)",
"Bash(git commit *)",
"Bash(ls *)",
"Bash(cat *)",
"Read",
"Bash(grep *)"
],
"deny": [
"Bash(rm -rf *)",
"Bash(git push --force *)",
"Bash(chmod 777 *)",
"Bash(curl * | bash)",
"Read(./.env)",
"Read(./.env.*)"
]
}
}
EOF
Что это делает: массив allow разрешает Claude Code выполнять указанные команды без запроса. Массив deny полностью блокирует опасные команды. Правила работают по принципу deny-first: если команда подходит под оба списка, deny побеждает.
Проверьте, что файл создан с правильными правами:
ls -la .claude/settings.json
Файл должен быть читаемым вашим пользователем. Так как файл коммитится в git, он применяется ко всем, кто клонирует проект. Для персональных переопределений используйте .claude/settings.local.json (автоматически в gitignore).
Как мониторить ресурсы VPS?
Claude Code на VPS с 4 ГБ использует 200-400 МБ RAM при обычной работе. Крупные проекты или несколько параллельных задач увеличивают потребление. Настройка swap предотвращает убийство процессов из-за нехватки памяти.
Добавление swap
Проверьте, есть ли уже swap:
sudo swapon --show
Если вывод пустой, создайте swap-файл на 2 ГБ:
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
Сделайте его постоянным, добавив в /etc/fstab:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Проверка:
free -h
Вы должны увидеть swap в выводе. Обратите внимание на строку Swap: с 2.0Gi.
Проверка использования ресурсов
Мониторьте память и CPU при работающем Claude Code:
htop
Если htop не установлен: sudo apt install -y htop. Следите за полосой памяти. Claude Code должен держаться в районе 200-400 МБ. Если постоянно загружено больше 80% RAM, стоит обновить VPS или остановить другие сервисы.
Проверка диска:
df -h /
Сам Claude Code занимает минимум места на диске. Основные потребители — файлы проекта и история git.
Сколько стоит запуск Claude Code на VPS?
Claude Code работает на вашей существующей подписке Claude без дополнительной платы. Общая ежемесячная стоимость — VPS плюс план Claude.
| Тариф VPS | Стоимость в месяц | План Claude | Стоимость плана | Итого |
|---|---|---|---|---|
| 2 vCPU, 4 ГБ RAM | ~$5-10 | Pro | $20/мес | $25-30/мес |
| 4 vCPU, 8 ГБ RAM | ~$10-20 | Max | $100/мес | $110-120/мес |
| 4 vCPU, 8 ГБ RAM | ~$10-20 | Console (API) | По токенам | $10-20 + потребление |
План Pro включает ограниченное использование Claude Code. План Max имеет повышенные лимиты для интенсивной работы. Оплата Console (API) идёт за токены и подходит командам, которым нужен точный контроль расходов.
Для постоянного агента, работающего круглосуточно, VPS 4 ГБ + план Pro за ~$25/мес — стартовая точка.
Что-то пошло не так?
Claude Code не аутентифицируется
Проверьте, установлена ли переменная окружения:
env | grep -E 'ANTHROPIC_API_KEY|CLAUDE_CODE_OAUTH_TOKEN'
Если пусто, перезагрузите профиль: source ~/.bashrc. Если переменная установлена, но аутентификация не проходит, убедитесь в валидности ключа. OAuth-токены истекают через год. API-ключи можно отозвать в Console.
tmux-сессия пропала
tmux-сессии теряются при перезагрузке сервера. После перезагрузки создайте новую:
tmux new -s claude
Проверьте, перезагружался ли сервер недавно:
uptime
Claude Code тормозит или не отвечает
Проверьте доступную память:
free -h
Если RAM почти заполнена и swap активно используется, Claude Code будет тормозить. Остановите ненужные процессы или обновите VPS. Также проверьте задержку до серверов Anthropic:
curl -o /dev/null -s -w '%{time_total}\n' https://api.anthropic.com
Всё, что меньше 1 секунды — нормально. Большие значения указывают на сетевые проблемы между вашим VPS и Anthropic.
Ошибки «Permission denied»
Если Claude Code не может читать или писать файлы, проверьте владельца:
ls -la ~/your-project
Файлы должны принадлежать вашему пользователю (claude:claude, если вы следовали этому руководству). Исправьте владельца:
sudo chown -R claude:claude ~/your-project
Посмотрите логи:
journalctl -u ssh -f
Показывает SSH-логи в реальном времени. Полезно для отладки проблем с подключением.
Copyright 2026 Virtua.Cloud. Все права защищены.
Готовы попробовать?
Разверните свой сервер за секунды. Linux, Windows или FreeBSD.
Смотреть тарифы VPS