Signatur
Beschreibung
ssh2_methods_negotiated() liefert nach dem Aufbau einer SSH2-Verbindung eine Übersicht über alle Methoden, die Client und Server gemeinsam ausgehandelt haben. Dazu gehören Verschlüsselungsverfahren, MAC-Algorithmen, Kompressionsverfahren sowie die Methoden für den Schlüsselaustausch und die Hostschlüssel-Verifikation.
Das zurückgegebene Array enthält typischerweise die Schlüssel kex (Key Exchange), hostkey, client_to_server und server_to_client. Die letzten beiden sind selbst wiederum Arrays mit den Einträgen crypt, mac und comp für die jeweilige Richtung.
Die Funktion eignet sich vor allem zur Diagnose und zum Auditieren von SSH-Verbindungen: Man kann prüfen, ob tatsächlich die gewünschten, sicheren Algorithmen verwendet werden, und schwache oder veraltete Verfahren frühzeitig erkennen.
Voraussetzung ist die PECL-Erweiterung ssh2, die über pecl install ssh2 installiert wird. Das übergebene $session-Handle muss aus einem erfolgreichen Aufruf von ssh2_connect() stammen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $session Pflicht | resource | Eine aktive SSH2-Verbindungsressource, wie sie von ssh2_connect() zurückgegeben wird. |
Rückgabewert
kex, hostkey, client_to_server und server_to_client. Die Richtungs-Arrays enthalten jeweils crypt, mac und comp.Beispiele
Ausgehandelte Methoden einer SSH2-Verbindung ausgeben
<?php
$session = ssh2_connect('example.com', 22);
if ($session === false) {
die('Verbindung fehlgeschlagen.');
}
$methods = ssh2_methods_negotiated($session);
echo 'Key-Exchange-Methode: ' . $methods['kex'] . PHP_EOL;
echo 'Hostkey-Methode: ' . $methods['hostkey'] . PHP_EOL;
echo 'Client → Server:' . PHP_EOL;
echo ' Verschlüsselung: ' . $methods['client_to_server']['crypt'] . PHP_EOL;
echo ' MAC: ' . $methods['client_to_server']['mac'] . PHP_EOL;
echo ' Kompression: ' . $methods['client_to_server']['comp'] . PHP_EOL;
echo 'Server → Client:' . PHP_EOL;
echo ' Verschlüsselung: ' . $methods['server_to_client']['crypt'] . PHP_EOL;
echo ' MAC: ' . $methods['server_to_client']['mac'] . PHP_EOL;
echo ' Kompression: ' . $methods['server_to_client']['comp'] . PHP_EOL;
?>
Sicherheits-Audit: schwache Algorithmen erkennen
<?php
$session = ssh2_connect('example.com', 22);
if ($session === false) {
die('Verbindung fehlgeschlagen.');
}
$methods = ssh2_methods_negotiated($session);
$unsichereAlgorithmen = ['arcfour', 'blowfish-cbc', 'des', '3des-cbc', 'hmac-md5'];
foreach (['client_to_server', 'server_to_client'] as $richtung) {
$crypt = $methods[$richtung]['crypt'];
$mac = $methods[$richtung]['mac'];
if (in_array($crypt, $unsichereAlgorithmen, true)) {
echo "WARNUNG: Unsichere Verschlüsselung '{$crypt}' in {$richtung}." . PHP_EOL;
}
if (in_array($mac, $unsichereAlgorithmen, true)) {
echo "WARNUNG: Unsicherer MAC-Algorithmus '{$mac}' in {$richtung}." . PHP_EOL;
}
}
echo 'Audit abgeschlossen.' . PHP_EOL;
?>
// Wichtig · Fallstricke
Sicherheitshinweis: Prüfe nach dem Verbindungsaufbau aktiv die ausgehandelten Algorithmen, insbesondere in sicherheitskritischen Umgebungen. Veraltete Verfahren wie arcfour, blowfish-cbc oder hmac-md5 sollten serverseitig deaktiviert werden.
Die Funktion setzt die PECL-Erweiterung ssh2 voraus (pecl install ssh2). Sie ist nicht Bestandteil der PHP-Standardinstallation. Wird ein ungültiges oder bereits geschlossenes Ressource-Handle übergeben, kann ein Fehler auftreten.