Claude Code auf einem VPS betreiben: Installation, Absicherung und persistente Sitzungen

10 Min. Lesezeit·Matthieu|

Richten Sie Claude Code auf einem Remote-Linux-Server ein – mit Headless-Authentifizierung, tmux-Sitzungspersistenz und Sicherheitshärtung. Jeder Befehl verifiziert.

Claude Code auf einem VPS betreiben

Claude Code ist ein terminalbasierter KI-Coding-Agent. Er liest Ihre Codebasis, bearbeitet Dateien, führt Befehle aus und erstellt Features aus Beschreibungen in natürlicher Sprache. Auf einem VPS erhalten Sie einen persistenten Coding-Agenten, der rund um die Uhr läuft und von jedem Gerät per SSH erreichbar ist.

Diese Anleitung führt Sie von einem frischen Ubuntu-VPS zu einer funktionierenden Claude-Code-Installation mit Sitzungspersistenz. Jeder Schritt enthält einen Verifizierungsbefehl, damit Sie wissen, dass er funktioniert hat.

Was braucht Claude Code von einem VPS?

Claude Code sendet Ihre Prompts an die Server von Anthropic zur Inferenz. Ihr VPS speichert nur Projektdateien, Entwicklungstools und den Claude-Code-Prozess selbst. Sie brauchen also weder eine GPU noch High-End-Hardware.

Anforderung Minimum Empfohlen
OS Ubuntu 20.04 LTS Ubuntu 24.04 LTS
RAM 4 GB 8 GB
Festplatte 20 GB SSD 40 GB NVMe
CPU 2 vCPUs 4 vCPUs
Netzwerk Stabile Internetverbindung Verbindung mit niedriger Latenz
Abhängigkeiten Keine (nativer Installer) git, ripgrep (enthalten)

Der native Installer enthält ripgrep und benötigt keine Laufzeitabhängigkeiten wie Node.js. Ein 4-GB-VPS bewältigt Claude Code und eine mittelgroße Codebasis. Wenn Sie mit großen Monorepos arbeiten oder zusätzliche Dienste betreiben, wählen Sie 8 GB.

Kontoanforderung: Claude Code erfordert ein Claude Pro-, Max-, Teams-, Enterprise- oder Console-Konto. Der kostenlose Claude.ai-Plan enthält keinen Claude-Code-Zugang.

Wie sichern Sie einen VPS vor der Claude-Code-Installation ab?

Härten Sie Ihren Server, bevor Sie irgendetwas installieren. Ein VPS wird innerhalb von Minuten nach der Inbetriebnahme von automatisierten Brute-Force-Angriffen getroffen. Diese Schritte erstellen einen Nicht-Root-Benutzer, erzwingen SSH-Schlüssel-Authentifizierung, richten eine Firewall ein und aktivieren automatische Sicherheitsupdates.

Wenn Sie bereits einen gehärteten Server haben, springen Sie zu Wie installieren Sie Claude Code auf einem Linux-Server?. Für eine ausführlichere Erklärung jedes Sicherheitsschritts siehe .

Nicht-Root-Benutzer erstellen

Verbinden Sie sich per SSH als Root mit Ihrem Server und erstellen Sie dann einen Benutzer mit Sudo-Rechten:

ssh root@YOUR_SERVER_IP
adduser claude
usermod -aG sudo claude

Kopieren Sie Ihren SSH-Schlüssel zum neuen Benutzer, damit Sie sich ohne Passwort anmelden können:

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

Überprüfen Sie, ob Sie sich als neuer Benutzer von einem zweiten Terminal aus anmelden können, bevor Sie fortfahren. Schließen Sie Ihre Root-Sitzung noch nicht:

ssh claude@YOUR_SERVER_IP

Sie sollten eine Shell-Eingabeaufforderung als claude@yourserver erhalten. Wenn das funktioniert, fahren Sie fort.

Passwort-Authentifizierung deaktivieren

Bearbeiten Sie die SSH-Konfiguration, um passwortbasierte Anmeldungen zu blockieren:

sudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config

Starten Sie SSH neu und überprüfen Sie, ob die Einstellungen übernommen wurden:

sudo systemctl restart ssh
sudo sshd -T | grep -E 'passwordauthentication|permitrootlogin'

Erwartete Ausgabe (Reihenfolge kann variieren):

permitrootlogin no
passwordauthentication no

Firewall einrichten

UFW (Uncomplicated Firewall) blockiert sämtlichen eingehenden Datenverkehr, außer was Sie erlauben. Auf manchen minimalen VPS-Images müssen Sie UFW zuerst mit sudo apt install -y ufw installieren.

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw enable

Überprüfen Sie die Regeln:

sudo ufw status

Erwartete Ausgabe:

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

fail2ban installieren

fail2ban sperrt IP-Adressen nach wiederholten fehlgeschlagenen SSH-Anmeldeversuchen:

sudo apt update && sudo apt install -y fail2ban

Erstellen Sie eine lokale Konfiguration, damit Ihre Einstellungen Paketaktualisierungen überstehen:

sudo tee /etc/fail2ban/jail.local > /dev/null << 'EOF'
[sshd]
enabled = true
port = ssh
filter = sshd
maxretry = 5
bantime = 3600
findtime = 600
EOF

Aktivieren und überprüfen:

sudo systemctl enable --now fail2ban
sudo systemctl status fail2ban

Genau hinsehen: Die Ausgabe sollte active (running) anzeigen. Das Flag enable --now startet fail2ban sofort und sorgt dafür, dass es Neustarts überlebt.

sudo fail2ban-client status sshd

Dies zeigt, dass das Jail aktiv ist und 0 IPs aktuell gesperrt sind (bei einer frischen Installation erwartet).

Automatische Sicherheitsupdates aktivieren

Unattended-upgrades behebt Sicherheitslücken ohne manuellen Eingriff:

sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades

Wählen Sie „Yes" bei der Abfrage. Überprüfen Sie, ob es aktiv ist:

sudo systemctl status unattended-upgrades

Die Ausgabe sollte active (running) anzeigen.

Wie installieren Sie Claude Code auf einem Linux-Server?

Der native Installer ist die empfohlene Methode. Er benötigt keine Abhängigkeiten, aktualisiert sich automatisch im Hintergrund und läuft auf jeder unterstützten Linux-Distribution. Die npm-Installationsmethode ist veraltet.

Führen Sie den Installer als Nicht-Root-Benutzer aus (nicht als Root):

curl -fsSL https://claude.ai/install.sh | bash

Dies ist der offizielle Anthropic-Installer. Wenn Sie vor der Ausführung prüfen möchten, finden Sie in der Installationsdokumentation SHA256-Prüfsummen und Details zur Code-Signierung.

Der Installer legt die Binärdatei unter ~/.local/bin/claude ab und fügt sie Ihrem PATH hinzu. Öffnen Sie eine neue Shell oder laden Sie Ihr Profil neu:

source ~/.bashrc

Überprüfen Sie die Installation:

claude --version

Sie sollten eine Versionsnummer wie 2.x.x sehen. Führen Sie die integrierte Diagnose aus:

claude doctor

Dies prüft Ihre Systemkonfiguration, Netzwerkverbindung und den Authentifizierungsstatus. Die Authentifizierung wird an dieser Stelle als unvollständig angezeigt. Das ist normal.

Wie authentifizieren Sie Claude Code auf einem Headless-VPS?

Claude Code öffnet normalerweise ein Browserfenster für die OAuth-Anmeldung. Auf einem Headless-Server ohne GUI brauchen Sie einen anderen Ansatz. Sie haben zwei Optionen je nach Kontotyp.

Option A: API-Schlüssel aus der Claude Console

Wenn Sie ein Claude-Console-Konto haben (API-basierte Abrechnung), setzen Sie die Umgebungsvariable ANTHROPIC_API_KEY. Dies ist die einfachste Methode für Headless-Server.

Generieren Sie einen API-Schlüssel auf console.anthropic.com. Speichern Sie ihn dann sicher auf Ihrem 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

Was dies bewirkt: Es wird eine dedizierte Datei mit eingeschränkten Berechtigungen erstellt (nur Ihr Benutzer kann sie lesen), anstatt Geheimnisse in .bashrc zu speichern, wo sie in der Shell-Historie auftauchen und von anderen Prozessen gelesen werden können.

Laden Sie die Datei in Ihr Shell-Profil. Fügen Sie diese Zeile zu ~/.bashrc hinzu:

echo 'set -a; source /etc/claude-code/env; set +a' >> ~/.bashrc
source ~/.bashrc

Überprüfen Sie, ob der Schlüssel geladen ist:

echo $ANTHROPIC_API_KEY | head -c 15

Sie sollten sk-ant-api03-xx sehen (die ersten 15 Zeichen Ihres Schlüssels).

Option B: OAuth-Token aus einem Claude-Abonnement

Wenn Sie ein Claude Pro- oder Max-Abonnement nutzen (nicht Console), generieren Sie ein OAuth-Token auf einer Maschine mit Browser und übertragen Sie es dann auf den VPS.

Auf Ihrer lokalen Maschine (die mit Browser):

claude setup-token

Dies öffnet einen Browser zur OAuth-Authentifizierung und gibt ein langlebiges Token aus, das mit sk-ant-oat01- beginnt. Das Token ist ein Jahr gültig.

Kopieren Sie das Token. Speichern Sie es dann auf Ihrem VPS auf die gleiche Weise:

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

Sie müssen außerdem ~/.claude.json erstellen, um den Einrichtungsassistenten zu überspringen:

cat > ~/.claude.json << 'EOF'
{
  "hasCompletedOnboarding": true
}
EOF
chmod 600 ~/.claude.json

Laden Sie es in Ihr Shell-Profil:

echo 'set -a; source /etc/claude-code/env; set +a' >> ~/.bashrc
source ~/.bashrc

Authentifizierung überprüfen

Testen Sie, ob Claude Code die Anthropic-Server erreichen kann:

claude -p "Say hello in exactly 5 words"

Das Flag -p führt einen einzelnen Prompt aus, ohne den interaktiven Modus zu starten. Wenn Sie eine Begrüßung mit fünf Wörtern sehen, funktioniert die Authentifizierung. Bei einem Authentifizierungsfehler prüfen Sie, ob Ihre Umgebungsvariable korrekt gesetzt ist: env | grep -E 'ANTHROPIC_API_KEY|CLAUDE_CODE_OAUTH_TOKEN'.

Wie bleibt Claude Code nach dem Trennen der SSH-Verbindung aktiv?

Verwenden Sie tmux. Es erstellt Terminalsitzungen, die auf dem Server unabhängig von Ihrer SSH-Verbindung bestehen bleiben. Klappen Sie Ihren Laptop zu, fliegen Sie in ein anderes Land, verbinden Sie sich per SSH von Ihrem Handy. Die Sitzung ist noch da, genau dort, wo Sie sie verlassen haben.

tmux installieren

sudo apt install -y tmux

Überprüfung:

tmux -V

tmux für Claude Code konfigurieren

Erstellen Sie eine .tmux.conf mit Einstellungen, die für lange Coding-Sitzungen optimiert sind:

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

Eine Claude-Code-Sitzung starten

Erstellen Sie eine benannte tmux-Sitzung und starten Sie Claude Code darin:

tmux new -s claude

Sie befinden sich jetzt in einer tmux-Sitzung namens „claude". Starten Sie Claude Code:

cd ~/your-project
claude

Claude Code läuft. Um die Sitzung zu trennen (im Hintergrund weiterlaufen lassen), drücken Sie:

Ctrl+B, dann D

Sie sind zurück an Ihrem regulären SSH-Prompt. Claude Code läuft weiter in tmux.

tmux-Kurzreferenz

Aktion Befehl
Benannte Sitzung erstellen tmux new -s claude
Von Sitzung trennen Ctrl+B, dann D
Sitzungen auflisten tmux ls
An Sitzung wieder anhängen tmux attach -t claude
Sitzung beenden tmux kill-session -t claude
Nach oben scrollen Ctrl+B, dann [, dann Pfeiltasten
Scrollmodus verlassen q

Wie verbinden Sie sich von einem anderen Gerät mit einer Claude-Code-Sitzung?

Verbinden Sie sich per SSH mit Ihrem VPS von jedem Gerät aus und hängen Sie sich wieder an:

ssh claude@YOUR_SERVER_IP
tmux attach -t claude

Ihre Claude-Code-Sitzung ist genau dort, wo Sie sie verlassen haben. Der Gesprächsverlauf, der Dateikontext und alle laufenden Aufgaben sind erhalten. Das funktioniert von einem Laptop, Handy (mit einer SSH-App wie Termius) oder einem anderen Server.

Wenn die Sitzung abgestürzt ist oder beendet wurde, schlägt tmux attach fehl. Starten Sie eine neue:

tmux ls

Wenn keine Sitzungen aufgelistet sind, erstellen Sie eine neue mit tmux new -s claude.

Wie schränken Sie ein, was Claude Code auf Ihrem Server tun darf?

Claude Code hat ein Berechtigungssystem, das steuert, welche Tools verwendet werden dürfen. Standardmäßig fragt es vor dem Ausführen von Bash-Befehlen oder dem Bearbeiten von Dateien nach Bestätigung. Sie können sichere Befehle vorab genehmigen und gefährliche blockieren, indem Sie .claude/settings.json im Projektverzeichnis verwenden.

Verwenden Sie niemals --dangerously-skip-permissions auf einem echten Server. Damit werden alle Sicherheitsabfragen umgangen und Claude Code kann jeden Befehl ohne Nachfrage ausführen.

Berechtigungs-Allowlist einrichten

Erstellen Sie eine projektweite Einstellungsdatei:

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

Was dies bewirkt: Das allow-Array erlaubt Claude Code, diese Befehle ohne jedes Mal nachzufragen auszuführen. Das deny-Array blockiert gefährliche Befehle vollständig. Regeln folgen einer Deny-first-Priorität: Wenn ein Befehl sowohl allow als auch deny entspricht, gewinnt deny.

Überprüfen Sie, ob die Datei mit korrekten Berechtigungen erstellt wurde:

ls -la .claude/settings.json

Die Datei sollte von Ihrem Benutzer lesbar sein. Da diese Datei in Git commited wird, gilt sie für alle, die das Projekt klonen. Für persönliche Überschreibungen verwenden Sie stattdessen .claude/settings.local.json (automatisch von Git ignoriert).

Wie überwachen Sie die Ressourcen auf Ihrem VPS?

Claude Code auf einem 4-GB-VPS verbraucht im normalen Betrieb zwischen 200 und 400 MB RAM. Große Projekte oder mehrere gleichzeitige Aufgaben treiben diesen Wert nach oben. Die Einrichtung von Swap-Speicher verhindert Out-of-Memory-Kills.

Swap-Speicher hinzufügen

Prüfen Sie, ob Swap bereits existiert:

sudo swapon --show

Wenn die Ausgabe leer ist, erstellen Sie eine 2-GB-Swap-Datei:

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

Machen Sie den Swap persistent über Neustarts hinweg, indem Sie ihn zu /etc/fstab hinzufügen:

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Überprüfung:

free -h

Sie sollten Ihren Swap-Speicher in der Ausgabe sehen. Genau hinsehen: Suchen Sie die Zeile Swap: mit 2.0Gi insgesamt.

Ressourcenverbrauch prüfen

Überwachen Sie Speicher und CPU, während Claude Code läuft:

htop

Falls htop nicht installiert ist: sudo apt install -y htop. Beobachten Sie den Speicherbalken. Claude Code sollte um die 200-400 MB pendeln. Wenn er konstant 80 %+ des gesamten RAM erreicht, ziehen Sie ein VPS-Upgrade in Betracht oder beenden Sie andere Dienste.

Festplattennutzung prüfen:

df -h /

Claude Code selbst verbraucht minimalen Festplattenspeicher. Ihre Projektdateien und die Git-Historie sind die Hauptverbraucher.

Was kostet es, Claude Code auf einem VPS zu betreiben?

Claude Code läuft auf Ihrem bestehenden Claude-Abonnement ohne Zusatzkosten. Ihre monatlichen Gesamtkosten sind der VPS plus der Claude-Plan.

VPS-Tier Monatliche Kosten Claude-Plan Plankosten Gesamt
2 vCPU, 4 GB RAM ~5-10 $ Pro 20 $/Monat 25-30 $/Monat
4 vCPU, 8 GB RAM ~10-20 $ Max 100 $/Monat 110-120 $/Monat
4 vCPU, 8 GB RAM ~10-20 $ Console (API) Pro Token 10-20 $ + Nutzung

Der Pro-Plan enthält eine begrenzte Claude-Code-Nutzung. Der Max-Plan hat höhere Rate-Limits für intensiven Einsatz. Die Console-Abrechnung (API) erfolgt pro Token und eignet sich für Teams, die eine detaillierte Kostenkontrolle benötigen.

Für einen persistenten Coding-Agenten, der rund um die Uhr läuft, ist der 4-GB-VPS + Pro-Plan für ca. 25 $/Monat der Einstiegspunkt.

Etwas funktioniert nicht?

Claude Code authentifiziert sich nicht

Prüfen Sie, ob Ihre Umgebungsvariable gesetzt ist:

env | grep -E 'ANTHROPIC_API_KEY|CLAUDE_CODE_OAUTH_TOKEN'

Falls leer, laden Sie Ihr Profil neu: source ~/.bashrc. Falls die Variable gesetzt ist, aber die Authentifizierung fehlschlägt, überprüfen Sie die Gültigkeit des Schlüssels. OAuth-Tokens laufen nach einem Jahr ab. API-Schlüssel können über die Console widerrufen werden.

tmux-Sitzung verschwunden

tmux-Sitzungen gehen bei einem Serverneustart verloren. Nach einem Neustart starten Sie eine neue Sitzung:

tmux new -s claude

So prüfen Sie, ob der Server kürzlich neu gestartet wurde:

uptime

Claude Code ist langsam oder reagiert nicht

Prüfen Sie den verfügbaren Speicher:

free -h

Wenn der RAM fast voll ist und der Swap stark genutzt wird, wird Claude Code langsamer. Beenden Sie ungenutzte Prozesse oder upgraden Sie Ihren VPS. Prüfen Sie auch die Netzwerklatenz zu den Anthropic-Servern:

curl -o /dev/null -s -w '%{time_total}\n' https://api.anthropic.com

Alles unter 1 Sekunde ist normal. Höhere Werte deuten auf Netzwerkprobleme zwischen Ihrem VPS und Anthropic hin.

Zugriffsverweigerungsfehler

Wenn Claude Code keine Dateien lesen oder schreiben kann, prüfen Sie die Eigentümerschaft:

ls -la ~/your-project

Dateien sollten Ihrem Benutzer gehören (claude:claude, wenn Sie dieser Anleitung gefolgt sind). Eigentümerschaft korrigieren:

sudo chown -R claude:claude ~/your-project

Prüfen Sie die Logs für weitere Details:

journalctl -u ssh -f

Dies zeigt SSH-bezogene Logs in Echtzeit. Nützlich für die Diagnose von Verbindungsproblemen.

Copyright 2026 Virtua.Cloud. Alle Rechte vorbehalten. Dieser Inhalt ist ein Originalwerk des Virtua.Cloud-Teams. Vervielfältigung, Wiederveröffentlichung oder Weiterverbreitung ohne schriftliche Genehmigung ist untersagt.

Bereit, es selbst auszuprobieren?

Stellen Sie Ihren eigenen Server in Sekunden bereit. Linux, Windows oder FreeBSD.

VPS-Angebote ansehen