API-Dokumentation Webhosting für alle LWS besuchen

SSH-Schlüssel hinzufügen

POST /api/v1/ssh-keys

operationIdpostSshKey

Erforderliche Stufe
Betrieb
Kontingent
Mutation, 300 Aufrufe pro Stunde

Hinterlegt einen öffentlichen Schlüssel im Konto. Er ist ab seiner Erstellung aktiv.

Der Schlüssel wird abgelehnt, wenn sein Algorithmus nicht erkannt wird oder es sich um einen RSA-Schlüssel mit weniger als 2048 Bit handelt. Die Antwort enthält die Detailansicht des Schlüssels: Notieren Sie daraus seine id, die zum Deaktivieren oder Löschen benötigt wird. Konnte die Detailansicht nicht erneut gelesen werden, beschränkt sich die Antwort auf {"created": true}: Ermitteln Sie den Schlüssel dann über GET /ssh-keys.

Anfrage-Body

  • key string

    Öffentlicher OpenSSH-Schlüssel, wie in der .pub-Datei

    erforderlich
Beispielanfrage
{
  "key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINK0AO80+x734if/v0cHQXq3DTEQDjY2M0t6Mm3lDOiC poste-admin"
}

Antworten

201

Schlüssel gespeichert

{
  "data": {
    "id": "47",
    "type": "ssh-ed25519",
    "comment": "poste-admin",
    "active": true,
    "fingerprint": "SHA256:lpEBpHL5EO65b9cDXg8YjfqlnovHfCn+3faPLPbfnZI",
    "fingerprint_md5": "ab:c7:15:6a:9a:4e:fb:02:1b:b8:ab:3f:e5:41:67:a2",
    "weak": false
  }
}
Felder der Antwort 8
  • data object erforderlich
  • id string

    Beispiel: 47

  • type string

    Beispiel: ssh-ed25519

  • comment string

    In den Schlüssel eingebetteter Kommentar

  • fingerprint string

    SHA-256-Fingerabdruck, Format ssh-keygen -l

  • fingerprint_md5 string

    MD5-Fingerabdruck, wie ihn das Panel anzeigt

  • active boolean

    Wird bei der Erstellung oder Neuinstallation eines VPS automatisch installiert

  • weak boolean

    Altschlüssel, der heute beim Hinzufügen abgelehnt würde (RSA mit weniger als 2048 Bit): aufgeführt, damit er deaktiviert oder gelöscht werden kann, bei der Neuinstallation abgelehnt

400

Ungültige Parameter: validation_failed — Schlüssel nicht lesbar, unbekannten Typs oder RSA mit weniger als 2048 Bit.

{
  "type": "https://docs.lws.fr/kvm/errors/validation-failed",
  "title": "Paramètres invalides",
  "status": 400,
  "code": "validation_failed",
  "detail": "Clé SSH refusée. Attendu : une clé publique OpenSSH d'un type reconnu, les clés RSA devant faire au moins 2048 bits.",
  "request_id": "3f9a1c07b2e45d18",
  "errors": {
    "key": "Clé SSH refusée. Attendu : une clé publique OpenSSH d'un type reconnu, les clés RSA devant faire au moins 2048 bits."
  }
}
Felder der Antwort 18
  • type string (uri)

    Beispiel: https://docs.lws.fr/kvm/errors/vm-not-found

    erforderlich
  • title string

    Kurztitel

    Beispiel: VPS introuvable

    erforderlich
  • status integer (int64)

    HTTP-Status

    Beispiel: 404

    erforderlich
  • code string

    Stabiler Maschinencode (siehe „Fehler“ in Erste Schritte)

    Beispiel: vm_not_found

    erforderlich
  • detail string

    Ausführliche Meldung

    Beispiel: Aucun VPS 999999 sur ce compte.

    erforderlich
  • request_id string

    Bezeichner der Anfrage, an den Support weiterzugeben

    Beispiel: 3f9a1c07b2e45d18

    erforderlich
  • errors object

    validation_failed: Meldung je fehlerhaftem Parameter

  • required_level string

    insufficient_scope: vom Vorgang geforderte Stufe

    eines von: read, exploitation, full

  • task_id string

    task_already_running: laufende Aufgabe auf diesem VPS

    Beispiel: tsk_000002d5

  • family string

    rate_limited: ausgeschöpfte Kontingentgruppe

    eines von: read, mutation, heavy

  • limit integer (int64)

    rate_limited: stündliche Obergrenze der Gruppe

  • retry_after integer (int64)

    rate_limited: Sekunden bis zum nächsten Versuch

  • lock string

    server_locked: vom Hypervisor gesetzte Sperre (backup, snapshot, suspended …)

    Beispiel: snapshot

  • reason string

    server_locked: operation_in_progress – ein Vorgang läuft, versuchen Sie es nach Retry-After erneut; suspended – der VPS befindet sich im Ruhezustand, starten Sie ihn zuerst; support_notified – ungewöhnliche Sperre, das LWS-Team ist informiert und kümmert sich darum

    eines von: operation_in_progress, suspended, support_notified

  • maintenance object

    server_maintenance: Art des Eingriffs, Beginn und voraussichtliches Ende (null bei einem Vorfall)

  • kind string

    eines von: works, incident

  • started_at string (date-time)
  • expected_end string (date-time)
401

Authentifizierung abgelehnt: invalid_token — Header Authorization fehlt oder ist fehlerhaft, oder Schlüssel unbekannt; access_disabled — API-Zugang für dieses Konto gesperrt, oder API-Dienst vorübergehend von LWS abgeschaltet.

Header Authorization fehlt oder ist fehlerhaft, oder Schlüssel unbekannt

{
  "type": "https://docs.lws.fr/kvm/errors/invalid-token",
  "title": "Authentification invalide",
  "status": 401,
  "code": "invalid_token",
  "detail": "Clé inconnue ou révoquée.",
  "request_id": "3f9a1c07b2e45d18"
}

API-Zugang für dieses Konto gesperrt, oder API-Dienst vorübergehend von LWS abgeschaltet

{
  "type": "https://docs.lws.fr/kvm/errors/access-disabled",
  "title": "Accès API désactivé",
  "status": 401,
  "code": "access_disabled",
  "detail": "L'accès API est désactivé pour ce compte. Réactivez-le depuis la page « API / MCP » du panel.",
  "request_id": "3f9a1c07b2e45d18"
}
Felder der Antwort 18
  • type string (uri)

    Beispiel: https://docs.lws.fr/kvm/errors/vm-not-found

    erforderlich
  • title string

    Kurztitel

    Beispiel: VPS introuvable

    erforderlich
  • status integer (int64)

    HTTP-Status

    Beispiel: 404

    erforderlich
  • code string

    Stabiler Maschinencode (siehe „Fehler“ in Erste Schritte)

    Beispiel: vm_not_found

    erforderlich
  • detail string

    Ausführliche Meldung

    Beispiel: Aucun VPS 999999 sur ce compte.

    erforderlich
  • request_id string

    Bezeichner der Anfrage, an den Support weiterzugeben

    Beispiel: 3f9a1c07b2e45d18

    erforderlich
  • errors object

    validation_failed: Meldung je fehlerhaftem Parameter

  • required_level string

    insufficient_scope: vom Vorgang geforderte Stufe

    eines von: read, exploitation, full

  • task_id string

    task_already_running: laufende Aufgabe auf diesem VPS

    Beispiel: tsk_000002d5

  • family string

    rate_limited: ausgeschöpfte Kontingentgruppe

    eines von: read, mutation, heavy

  • limit integer (int64)

    rate_limited: stündliche Obergrenze der Gruppe

  • retry_after integer (int64)

    rate_limited: Sekunden bis zum nächsten Versuch

  • lock string

    server_locked: vom Hypervisor gesetzte Sperre (backup, snapshot, suspended …)

    Beispiel: snapshot

  • reason string

    server_locked: operation_in_progress – ein Vorgang läuft, versuchen Sie es nach Retry-After erneut; suspended – der VPS befindet sich im Ruhezustand, starten Sie ihn zuerst; support_notified – ungewöhnliche Sperre, das LWS-Team ist informiert und kümmert sich darum

    eines von: operation_in_progress, suspended, support_notified

  • maintenance object

    server_maintenance: Art des Eingriffs, Beginn und voraussichtliches Ende (null bei einem Vorfall)

  • kind string

    eines von: works, incident

  • started_at string (date-time)
  • expected_end string (date-time)
403

Zugriff verweigert: insufficient_scope — Stufe des Schlüssels unzureichend; ip_not_allowed — aufrufende Adresse nicht zugelassen.

Stufe des Schlüssels unzureichend

{
  "type": "https://docs.lws.fr/kvm/errors/insufficient-scope",
  "title": "Droits insuffisants",
  "status": 403,
  "code": "insufficient_scope",
  "detail": "Niveau de permission « exploitation » requis.",
  "request_id": "3f9a1c07b2e45d18",
  "required_level": "exploitation"
}

aufrufende Adresse nicht zugelassen

{
  "type": "https://docs.lws.fr/kvm/errors/ip-not-allowed",
  "title": "Adresse non autorisée",
  "status": 403,
  "code": "ip_not_allowed",
  "detail": "L'adresse 203.0.113.10 ne figure pas parmi les adresses autorisées de ce compte.",
  "request_id": "3f9a1c07b2e45d18"
}
Felder der Antwort 18
  • type string (uri)

    Beispiel: https://docs.lws.fr/kvm/errors/vm-not-found

    erforderlich
  • title string

    Kurztitel

    Beispiel: VPS introuvable

    erforderlich
  • status integer (int64)

    HTTP-Status

    Beispiel: 404

    erforderlich
  • code string

    Stabiler Maschinencode (siehe „Fehler“ in Erste Schritte)

    Beispiel: vm_not_found

    erforderlich
  • detail string

    Ausführliche Meldung

    Beispiel: Aucun VPS 999999 sur ce compte.

    erforderlich
  • request_id string

    Bezeichner der Anfrage, an den Support weiterzugeben

    Beispiel: 3f9a1c07b2e45d18

    erforderlich
  • errors object

    validation_failed: Meldung je fehlerhaftem Parameter

  • required_level string

    insufficient_scope: vom Vorgang geforderte Stufe

    eines von: read, exploitation, full

  • task_id string

    task_already_running: laufende Aufgabe auf diesem VPS

    Beispiel: tsk_000002d5

  • family string

    rate_limited: ausgeschöpfte Kontingentgruppe

    eines von: read, mutation, heavy

  • limit integer (int64)

    rate_limited: stündliche Obergrenze der Gruppe

  • retry_after integer (int64)

    rate_limited: Sekunden bis zum nächsten Versuch

  • lock string

    server_locked: vom Hypervisor gesetzte Sperre (backup, snapshot, suspended …)

    Beispiel: snapshot

  • reason string

    server_locked: operation_in_progress – ein Vorgang läuft, versuchen Sie es nach Retry-After erneut; suspended – der VPS befindet sich im Ruhezustand, starten Sie ihn zuerst; support_notified – ungewöhnliche Sperre, das LWS-Team ist informiert und kümmert sich darum

    eines von: operation_in_progress, suspended, support_notified

  • maintenance object

    server_maintenance: Art des Eingriffs, Beginn und voraussichtliches Ende (null bei einem Vorfall)

  • kind string

    eines von: works, incident

  • started_at string (date-time)
  • expected_end string (date-time)
429

Kontingent überschritten: rate_limited — stündliches Kontingent der Gruppe ausgeschöpft.

{
  "type": "https://docs.lws.fr/kvm/errors/rate-limited",
  "title": "Quota dépassé",
  "status": 429,
  "code": "rate_limited",
  "detail": "Quota dépassé pour les opérations de type « mutation » : 300 appels par heure. Réessayez dans 95 seconde(s).",
  "request_id": "3f9a1c07b2e45d18",
  "family": "mutation",
  "limit": 300,
  "retry_after": 95
}
Felder der Antwort 18
  • type string (uri)

    Beispiel: https://docs.lws.fr/kvm/errors/vm-not-found

    erforderlich
  • title string

    Kurztitel

    Beispiel: VPS introuvable

    erforderlich
  • status integer (int64)

    HTTP-Status

    Beispiel: 404

    erforderlich
  • code string

    Stabiler Maschinencode (siehe „Fehler“ in Erste Schritte)

    Beispiel: vm_not_found

    erforderlich
  • detail string

    Ausführliche Meldung

    Beispiel: Aucun VPS 999999 sur ce compte.

    erforderlich
  • request_id string

    Bezeichner der Anfrage, an den Support weiterzugeben

    Beispiel: 3f9a1c07b2e45d18

    erforderlich
  • errors object

    validation_failed: Meldung je fehlerhaftem Parameter

  • required_level string

    insufficient_scope: vom Vorgang geforderte Stufe

    eines von: read, exploitation, full

  • task_id string

    task_already_running: laufende Aufgabe auf diesem VPS

    Beispiel: tsk_000002d5

  • family string

    rate_limited: ausgeschöpfte Kontingentgruppe

    eines von: read, mutation, heavy

  • limit integer (int64)

    rate_limited: stündliche Obergrenze der Gruppe

  • retry_after integer (int64)

    rate_limited: Sekunden bis zum nächsten Versuch

  • lock string

    server_locked: vom Hypervisor gesetzte Sperre (backup, snapshot, suspended …)

    Beispiel: snapshot

  • reason string

    server_locked: operation_in_progress – ein Vorgang läuft, versuchen Sie es nach Retry-After erneut; suspended – der VPS befindet sich im Ruhezustand, starten Sie ihn zuerst; support_notified – ungewöhnliche Sperre, das LWS-Team ist informiert und kümmert sich darum

    eines von: operation_in_progress, suspended, support_notified

  • maintenance object

    server_maintenance: Art des Eingriffs, Beginn und voraussichtliches Ende (null bei einem Vorfall)

  • kind string

    eines von: works, incident

  • started_at string (date-time)
  • expected_end string (date-time)
502

Abhängigkeit nicht erreichbar: upstream_unavailable — API zur Schlüsselverwaltung nicht erreichbar.

{
  "type": "https://docs.lws.fr/kvm/errors/upstream-unavailable",
  "title": "Service momentanément indisponible",
  "status": 502,
  "code": "upstream_unavailable",
  "detail": "La liste des clés SSH n'a pas pu être obtenue. Réessayez dans quelques instants.",
  "request_id": "3f9a1c07b2e45d18"
}
Felder der Antwort 18
  • type string (uri)

    Beispiel: https://docs.lws.fr/kvm/errors/vm-not-found

    erforderlich
  • title string

    Kurztitel

    Beispiel: VPS introuvable

    erforderlich
  • status integer (int64)

    HTTP-Status

    Beispiel: 404

    erforderlich
  • code string

    Stabiler Maschinencode (siehe „Fehler“ in Erste Schritte)

    Beispiel: vm_not_found

    erforderlich
  • detail string

    Ausführliche Meldung

    Beispiel: Aucun VPS 999999 sur ce compte.

    erforderlich
  • request_id string

    Bezeichner der Anfrage, an den Support weiterzugeben

    Beispiel: 3f9a1c07b2e45d18

    erforderlich
  • errors object

    validation_failed: Meldung je fehlerhaftem Parameter

  • required_level string

    insufficient_scope: vom Vorgang geforderte Stufe

    eines von: read, exploitation, full

  • task_id string

    task_already_running: laufende Aufgabe auf diesem VPS

    Beispiel: tsk_000002d5

  • family string

    rate_limited: ausgeschöpfte Kontingentgruppe

    eines von: read, mutation, heavy

  • limit integer (int64)

    rate_limited: stündliche Obergrenze der Gruppe

  • retry_after integer (int64)

    rate_limited: Sekunden bis zum nächsten Versuch

  • lock string

    server_locked: vom Hypervisor gesetzte Sperre (backup, snapshot, suspended …)

    Beispiel: snapshot

  • reason string

    server_locked: operation_in_progress – ein Vorgang läuft, versuchen Sie es nach Retry-After erneut; suspended – der VPS befindet sich im Ruhezustand, starten Sie ihn zuerst; support_notified – ungewöhnliche Sperre, das LWS-Team ist informiert und kümmert sich darum

    eines von: operation_in_progress, suspended, support_notified

  • maintenance object

    server_maintenance: Art des Eingriffs, Beginn und voraussichtliches Ende (null bei einem Vorfall)

  • kind string

    eines von: works, incident

  • started_at string (date-time)
  • expected_end string (date-time)
Codebeispiele und Testkonsole anzeigen
POST /ssh-keys
LWS_API_KEY='…'curl -X POST \  "https://panelkvm.lwspanel.com/api/v1/ssh-keys" \  -H "Authorization: Bearer $LWS_API_KEY" \  -H "Content-Type: application/json" \  -d '{"key":"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINK0AO80+x734if/v0cHQXq3DTEQDjY2M0t6Mm3lDOiC poste-admin"}'
$lwsApiKey = '…';$ch = curl_init("https://panelkvm.lwspanel.com/api/v1/ssh-keys");curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_HTTPHEADER, [    "Authorization: Bearer " . $lwsApiKey,    "Content-Type: application/json",]);curl_setopt($ch, CURLOPT_POSTFIELDS, '{"key":"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINK0AO80+x734if/v0cHQXq3DTEQDjY2M0t6Mm3lDOiC poste-admin"}');$res = json_decode(curl_exec($ch), true);
import requestsLWS_API_KEY = "…"res = requests.post(    "https://panelkvm.lwspanel.com/api/v1/ssh-keys",    headers={        "Authorization": "Bearer " + LWS_API_KEY,    },    json={"key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINK0AO80+x734if/v0cHQXq3DTEQDjY2M0t6Mm3lDOiC poste-admin"},)print(res.json())
const LWS_API_KEY = "…";const res = await fetch("https://panelkvm.lwspanel.com/api/v1/ssh-keys", {  method: "POST",  headers: {    "Authorization": "Bearer " + LWS_API_KEY,    "Content-Type": "application/json",  },  body: JSON.stringify({"key":"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINK0AO80+x734if/v0cHQXq3DTEQDjY2M0t6Mm3lDOiC poste-admin"}),});const data = await res.json();
lwsApiKey := "…"body := strings.NewReader(`{"key":"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINK0AO80+x734if/v0cHQXq3DTEQDjY2M0t6Mm3lDOiC poste-admin"}`)req, _ := http.NewRequest("POST",    "https://panelkvm.lwspanel.com/api/v1/ssh-keys", body)req.Header.Set("Authorization", "Bearer "+lwsApiKey)req.Header.Set("Content-Type", "application/json")resp, err := http.DefaultClient.Do(req)