Signatur
Beschreibung
ssh2_auth_none sendet eine Authentifizierungsanfrage vom Typ none an den SSH2-Server. Die meisten SSH-Server lehnen diese Methode als alleinige Authentifizierung ab, geben jedoch dabei eine Liste der tatsächlich erlaubten Authentifizierungsmethoden zurück (z. B. password, publickey, keyboard-interactive). Diese Information kann genutzt werden, um vorab zu ermitteln, welche Methoden der Server akzeptiert, bevor eine eigentliche Anmeldung versucht wird.
Gibt die Funktion true zurück, hat der Server die none-Authentifizierung tatsächlich akzeptiert – dies ist in der Praxis äußerst selten und auf speziell konfigurierte Server beschränkt. In den meisten Fällen erhält man ein Array mit den unterstützten Methoden oder false bei einem Fehler.
Die Funktion setzt eine aktive SSH2-Verbindung voraus, die zuvor mit ssh2_connect hergestellt wurde. Sie ist besonders nützlich als Vorbereitung für einen gezielten Authentifizierungsversuch, um unnötige Fehlschläge bei nicht unterstützten Methoden zu vermeiden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $session Pflicht | resource | Eine aktive SSH2-Verbindungsressource, wie sie von ssh2_connect zurückgegeben wird. |
|
| $username Pflicht | string | Der Benutzername, für den die Authentifizierung versucht werden soll. |
Rückgabewert
Gibt ein Array mit den vom Server unterstützten Authentifizierungsmethoden zurück (z. B. ['publickey', 'password']), wenn die none-Authentifizierung abgelehnt wurde. Gibt true zurück, wenn der Server die Authentifizierung ohne Anmeldedaten akzeptiert hat. Gibt false zurück, wenn ein Fehler aufgetreten ist.
Beispiele
Unterstützte Authentifizierungsmethoden abfragen
<?php
$connection = ssh2_connect('example.com', 22);
if (!$connection) {
die('Verbindung zum SSH-Server fehlgeschlagen.');
}
$authMethods = ssh2_auth_none($connection, 'deploy');
if ($authMethods === true) {
echo 'Server erlaubt anonyme Anmeldung (none).' . PHP_EOL;
} elseif (is_array($authMethods)) {
echo 'Unterstützte Authentifizierungsmethoden:' . PHP_EOL;
foreach ($authMethods as $method) {
echo ' - ' . $method . PHP_EOL;
}
} else {
echo 'Fehler beim Abfragen der Authentifizierungsmethoden.' . PHP_EOL;
}
Methode prüfen und gezielt authentifizieren
<?php
$connection = ssh2_connect('example.com', 22);
if (!$connection) {
die('Verbindung fehlgeschlagen.');
}
$authMethods = ssh2_auth_none($connection, 'deploy');
if (is_array($authMethods) && in_array('publickey', $authMethods)) {
$result = ssh2_auth_pubkey_file(
$connection,
'deploy',
'/home/user/.ssh/id_rsa.pub',
'/home/user/.ssh/id_rsa'
);
if ($result) {
echo 'Erfolgreich per Public-Key authentifiziert.' . PHP_EOL;
} else {
echo 'Public-Key-Authentifizierung fehlgeschlagen.' . PHP_EOL;
}
} elseif ($authMethods === true) {
echo 'Bereits als none authentifiziert.' . PHP_EOL;
} else {
echo 'publickey wird nicht unterstützt oder Fehler aufgetreten.' . PHP_EOL;
}
// Wichtig · Fallstricke
Erweiterung erforderlich: ssh2_auth_none gehört zur PECL-Erweiterung ssh2, die nicht im PHP-Standard-Lieferumfang enthalten ist und separat installiert werden muss (z. B. via pecl install ssh2).
Sicherheitshinweis: Ein Server, der die none-Authentifizierung wirklich akzeptiert, ist fehlkonfiguriert und stellt ein erhebliches Sicherheitsrisiko dar. Prüfen Sie in Produktivumgebungen stets, dass diese Methode serverseitig deaktiviert ist.
Rückgabetyp beachten: Der Rückgabewert kann true, ein Array oder false sein – eine strenge Typprüfung mit is_array() bzw. === true ist daher zwingend erforderlich, da ein leeres Array und false unterschiedliche Bedeutungen haben.