Запуск Claude Code на VPS: установка, защита и сохранение сессий

8 мин чтения·Matthieu|

Настройте 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