Start · Sprachen · PHP · Referenz · ssh2_publickey_list

ssh2_publickey_list

Funktion

Listet alle aktuell für die SSH-Verbindung autorisierten Public Keys auf.

seit PHP 0.10 Kategorie: http

Signatur

ssh2_publickey_list(resource $pkey): array

Beschreibung

ssh2_publickey_list() gibt eine Liste aller Public Keys zurück, die auf dem Remote-Server für den authentifizierten Benutzer autorisiert sind. Die Funktion gehört zur PECL-Erweiterung ssh2 und ist Teil des Subsystems zur Public-Key-Verwaltung, das auf dem SSH2-Protokoll basiert.

Um diese Funktion nutzen zu können, muss zunächst eine SSH2-Verbindung via ssh2_connect() hergestellt und anschließend eine Public-Key-Subsystem-Ressource mit ssh2_publickey_init() erzeugt werden. Diese Ressource wird als Parameter übergeben.

Die Funktion liefert ein Array von assoziativen Arrays, wobei jeder Eintrag Informationen zu einem Public Key enthält, darunter den Algorithmus (name), den Schlüssel selbst (blob) sowie optionale Attribute (attrs). Sie eignet sich besonders für Verwaltungsanwendungen, die programmatisch den Autorisierungsstatus von SSH-Schlüsseln abfragen oder synchronisieren müssen.

Hinweis: Diese Funktion erfordert die PECL-Erweiterung ssh2 und einen SSH-Server, der das publickey-Subsystem unterstützt. Sie ist nicht in der PHP-Standardinstallation enthalten.

Parameter

Name Typ Default Beschreibung
$pkey Pflicht resource Eine Public-Key-Subsystem-Ressource, die zuvor mit ssh2_publickey_init() erzeugt wurde.

Rückgabewert

Typ
array
Beschreibung
Gibt ein Array zurück, das alle autorisierten Public Keys enthält. Jeder Eintrag ist ein assoziatives Array mit den Schlüsseln name (Algorithmus-Name, z. B. ssh-rsa), blob (der rohe Schlüssel als Binärstring) und attrs (ein Array optionaler Attribute). Im Fehlerfall wird false zurückgegeben.

Beispiele

Autorisierte Public Keys auflisten

<?php
// SSH-Verbindung herstellen
$connection = ssh2_connect('example.com', 22);
if (!$connection) {
    die('Verbindung fehlgeschlagen.');
}

// Mit Passwort authentifizieren
if (!ssh2_auth_password($connection, 'benutzer', 'geheim')) {
    die('Authentifizierung fehlgeschlagen.');
}

// Public-Key-Subsystem initialisieren
$pkey = ssh2_publickey_init($connection);
if (!$pkey) {
    die('Public-Key-Subsystem konnte nicht initialisiert werden.');
}

// Alle autorisierten Keys abrufen
$keys = ssh2_publickey_list($pkey);
if ($keys === false) {
    die('Fehler beim Abrufen der Public Keys.');
}

foreach ($keys as $key) {
    echo 'Algorithmus: ' . $key['name'] . PHP_EOL;
    echo 'Blob (hex):  ' . bin2hex($key['blob']) . PHP_EOL;
    if (!empty($key['attrs'])) {
        foreach ($key['attrs'] as $attr => $value) {
            echo '  Attribut: ' . $attr . ' = ' . $value . PHP_EOL;
        }
    }
    echo '---' . PHP_EOL;
}
Algorithmus: ssh-rsa Blob (hex): 000000077373682d727361... --- Algorithmus: ssh-dss Blob (hex): 000000077373682d647373... ---

Anzahl autorisierter Keys ermitteln

<?php
$connection = ssh2_connect('example.com', 22);
ssh2_auth_password($connection, 'benutzer', 'geheim');

$pkey = ssh2_publickey_init($connection);
$keys = ssh2_publickey_list($pkey);

if (is_array($keys)) {
    echo 'Anzahl autorisierter Public Keys: ' . count($keys) . PHP_EOL;
} else {
    echo 'Keine Keys gefunden oder Fehler aufgetreten.' . PHP_EOL;
}
Anzahl autorisierter Public Keys: 2

// Wichtig · Fallstricke

Verfügbarkeit: Die Funktion ist nur verfügbar, wenn die PECL-Erweiterung ssh2 installiert ist (pecl install ssh2). Sie ist nicht Bestandteil der PHP-Kerninstallation.

Serverunterstützung: Nicht alle SSH-Server unterstützen das publickey-Subsystem (RFC 4819). Falls der Server es nicht unterstützt, schlägt ssh2_publickey_init() bereits fehl, und diese Funktion kann nicht verwendet werden.

Sicherheit: Die über diese Funktion abgerufenen Schlüssel-Blobs sind Rohdaten und sollten nie ungefiltert in Ausgaben oder Logs geschrieben werden, um Informationslecks zu vermeiden. Verbindungsdaten (Passwörter, Schlüssel) sollten stets sicher gespeichert und nicht im Quellcode hart kodiert sein.