Es gibt nichts, was Sie tun falsch neben dem Tippfehler: array('hostkey', 'ssh-rsa')
sollte array('hostkey' => 'ssh-rsa')
sein. Die Funktion ssh_connect()
gibt für einen Verbindungsfehler nur false zurück; Callbacks werden einfach noch nicht gestartet, wenn die falschen Anmeldeinformationen verwendet werden.
Es gibt Lösungen (zB wie von rubo77 unten vorgeschlagen), aber die, die ich finde, gibt Ihnen die meiste Kontrolle und erlaubt Ihnen, das zu tun, was Sie wollen (z. B. MAC-Fehler verfolgen), verwenden Sie die phpseclib-Bibliothek (http://phpseclib.sourceforge.net/ssh/intro.html) für SSH-Verbindungen und Kontrolle. Es bietet eine sehr genaue Steuerung der Befehle und beinhaltet auch die Protokollierung.
Es ist nicht die einfachste Lösung, aber Sie können so fein steuern, als wenn Sie direkt an der Tastatur/Terminal sind.
Sie haben die Kontrolle über Timeouts und können Callback-Befehle verwenden. Wenn Sie jedoch eine bessere Kontrolle wünschen, verwenden Sie read()
und write()
, und Sie können Verbindungen oder andere Probleme überwachen. Überprüfen Sie die documentation on logging with phpseclib: Sie können das Protokoll entweder protokollieren und analysieren oder getLastError()
aufrufen.
Log-Dateien werden 'Connection closed by server'
auf trennen zum Beispiel zeigen, sondern werden Ihnen auch sagen, wenn Sie einen nicht unterstützten Authentifizierungsmodus bei der Anmeldung usw. verwenden
Oder mehr, den Code lesen: Hier sind beispielsweise die Trennung Gründe:
$this->disconnect_reasons = array(
1 => 'NET_SSH2_DISCONNECT_HOST_NOT_ALLOWED_TO_CONNECT',
2 => 'NET_SSH2_DISCONNECT_PROTOCOL_ERROR',
3 => 'NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED',
4 => 'NET_SSH2_DISCONNECT_RESERVED',
5 => 'NET_SSH2_DISCONNECT_MAC_ERROR',
6 => 'NET_SSH2_DISCONNECT_COMPRESSION_ERROR',
7 => 'NET_SSH2_DISCONNECT_SERVICE_NOT_AVAILABLE',
8 => 'NET_SSH2_DISCONNECT_PROTOCOL_VERSION_NOT_SUPPORTED',
9 => 'NET_SSH2_DISCONNECT_HOST_KEY_NOT_VERIFIABLE',
10 => 'NET_SSH2_DISCONNECT_CONNECTION_LOST',
11 => 'NET_SSH2_DISCONNECT_BY_APPLICATION',
12 => 'NET_SSH2_DISCONNECT_TOO_MANY_CONNECTIONS',
13 => 'NET_SSH2_DISCONNECT_AUTH_CANCELLED_BY_USER',
14 => 'NET_SSH2_DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE',
15 => 'NET_SSH2_DISCONNECT_ILLEGAL_USER_NAME'
);
Kann jemand helfen? –
Ich denke, was Sie wollen, ist 'Array ('Hostschlüssel' => 'ssh-rsa')' – blue112