SSH Fehler nach 5.3 Stable update

Nach dem update gibt es einen Fehler mit der SSH Bibliothek :

Vor dem Upgrade hat der SSH Login Aufruf ohne Probleme funktioniert

Windows 10

IP-Symcon 5.3, Windows x64, 21.02.2020, 7dd2a700bd77

Von welcher Version kamst du? Kann es sein, dass du ein Windows Update auch gemacht hast?

paresy

Kein Windows update und ich kam von der aktuellen STABLE

Aktuell glaube ich noch nicht so richtig daran, dass das Update schuld sein kann. Kannst du mal die ips.exe gegen die aus deinem Backup mal tauschen und schauen, ob der Fehler dann weg ist?

EDIT: Evtl. könnte es mit dem geänderten Include Pfad zusammenhängen… Hier gibt es ein Ticket zu einem ähnlichen Problem: Notice: No compatible server to client encryption algorithms found in · Issue #340 · phpseclib/phpseclib · GitHub

paresy

Mit der IPS.EXE vom 18.1.2020 habe ich das gleiche Problem. Ich habe mir das Logfile vor dem Update angeschaut und da gibt es den SSH Fehler nicht, es muss also einen Zusammenhang mit dem update geben.

Ich schau mir mal die SSH Bibliothek an

Hier ist die Stelle aus der SSH2 Bibliothek

        // we need to decide upon the symmetric encryption algorithms before we do the diffie-hellman key exchange
        // we don't initialize any crypto-objects, yet - we do that, later. for now, we need the lengths to make the
        // diffie-hellman key exchange as fast as possible
        $decrypt = $this->_array_intersect_first($encryption_algorithms, $this->encryption_algorithms_server_to_client);
        $decryptKeyLength = $this->_encryption_algorithm_to_key_size($decrypt);
        if ($decryptKeyLength === null) {
            user_error('No compatible server to client encryption algorithms found');
            return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED);
        }

Beim update muss es einen Systemabsturz gegeben haben. Es gibt einen crashdump.
Ich versuche jetzt meinen BU von letzter Nacht einzuspielen

So der BU :

IP-Symcon 5.3, Windows x64, 18.01.2020, 9f7a7907472e

ist eingespielt und alles funktioniert wieder.

Ich mache jetzt nochmals den Upgrade

uuups damit habe ich jetzt nicht gerechnet :

Ich mache jede Nacht einen inkrementellen BU. Das heißt im BU Ordner wird nie etwas gelöscht.

Das führt dazu das in meinem BU Folder irgendwelche Dateien vorhanden sind die im Laufe der Migration von 5.X auf 5.3 vom update Programm gelöscht wurden.
Das hat zu keinem Problem beim starten von IPS geführt. Allerdings kommt beim update die folgende Meldung :

Welche Datei muss ich entfernen damit Symcon nicht mehr meckert ?

Ich habe jetzt erfolgreich einen upgrade auf die aktuelle Stable Version durchgeführt und der Fehler
taucht mit der aktuellen Version wieder auf !

Das Problem muss also warum auch immer im zusammenspiel mit meiner NET Bibliothek und dem letzten Release liegen. Vielleicht gibt es irgendeinen freiwilligen der versucht den Fehler zu reproduzieren.

Kann jemand den link zur aktuellen SSH2 Bibliothek posten ? Ich würde gerne sicherstellen das ich die aktuelle net Bibliothek nutze

Eigentlich sollte in der Bibliothek eine Quelle stehen. Oder der Name nach dem man suchen kann.
Vermutlich ist es die phpseclib.
Die gibt es hier:
Releases · phpseclib/phpseclib · GitHub
Michael

@Nall-chan

Herzlichen Dank für die schnelle Hilfe, ich werde meine alte Bibliothek gegen die neue austauschen und noch mal den upgrade probieren

Ich bekomme die aktuelle Bibliothek leider nicht zum laufen. Es gibt hier einige Unterschiede :

Hier ist das Beispiel von der 1.018 die im Moment bei mir installiert ist und die nach dem upgrade nicht mehr funktioniert :

Pure-PHP implementation of SSHv2.
 *
 * PHP versions 4 and 5
 *
 * Here are some examples of how to use this library:
 * <code>
 * <?php
 *    include 'Net/SSH2.php';
 *
 *    $ssh = new Net_SSH2('www.domain.tld');
 *    if (!$ssh->login('username', 'password')) {
 *        exit('Login Failed');
 *    }
 *
 *    echo $ssh->exec('pwd');
 *    echo $ssh->exec('ls -la');
 * ?>

und hier ist das gleiche Beispiel aus der aktuellen Bibliothek 2.025

 * Pure-PHP implementation of SSHv2.
 *
 * PHP version 5
 *
 * Here are some examples of how to use this library:
 * <code>
 * <?php
 *    include 'vendor/autoload.php';
 *
 *    $ssh = new \phpseclib\Net\SSH2('www.domain.tld');
 *    if (!$ssh->login('username', 'password')) {
 *        exit('Login Failed');
 *    }
 *
 *    echo $ssh->exec('pwd');
 *    echo $ssh->exec('ls -la');
 * ?>

Die Pfade unterscheiden sich doch sehr

Hier ist die Fehlermeldung :

Fatal error: Uncaught Error: Class ‚phpseclib\Crypt\Base‘ not found in C:\ProgramData\Symcon\scripts\phpseclib\Net\SSH2.php:4594
Stack trace:
#0 C:\ProgramData\Symcon\scripts\phpseclib\Net\SSH2.php(1351): phpseclib\Net\SSH2->getSupportedEncryptionAlgorithms()
#1 C:\ProgramData\Symcon\scripts\phpseclib\Net\SSH2.php(1288): phpseclib\Net\SSH2->_key_exchange()
#2 C:\ProgramData\Symcon\scripts\phpseclib\Net\SSH2.php(2141): phpseclib\Net\SSH2->_connect()
#3 [internal function]: phpseclib\Net\SSH2->_login(‚YYY‘, ‚XXX‘)
#4 C:\ProgramData\Symcon\scripts\phpseclib\Net\SSH2.php(2125): call_user_func_array(Array, Array)
#5 C:\ProgramData\Symcon\scripts\32355.ips.php(23): phpseclib\Net\SSH2->login(‚YYY‘, ‚XXXX‘)
#6 {main}
thrown in C:\ProgramData\Symcon\scripts\phpseclib\Net\SSH2.php on line 4594

und hier ist der Aufruf :

include ‚phpseclib\Net\SSH2.php‘;

$ssh = new phpseclib\Net\SSH2($ip);

if (!$ssh->login($username, $password)) // Hier der echte Login
{
exit(‚Login Failed‘);
}

und hier ist der Pfad :

Ich habe die Vermutung das sich das Problem hier befindet :

namespace phpseclib\Net;

use phpseclib\Crypt\Base;
use phpseclib\Crypt\Blowfish;
use phpseclib\Crypt\Hash;
use phpseclib\Crypt\Random;
use phpseclib\Crypt\RC4;
use phpseclib\Crypt\Rijndael;
use phpseclib\Crypt\RSA;
use phpseclib\Crypt\TripleDES;
use phpseclib\Crypt\Twofish;
use phpseclib\Math\BigInteger; // Used to do Diffie-Hellman key exchange and DSA/RSA signature verification.
use phpseclib\System\SSH\Agent;

@Paresy Kann es sein das der Fehler durch diese Änderung verursacht wird (letzte Stable 5.3) ?

  • Fix: PHP Inkludepfad enthälte immer den Pfad zum „scripts“ Ordner, damit auch in Ereignissen Dateien korrekt per include geladen werden können

Ich nutze es zwar nicht in einem Script, aber in einem Modul.
Dort habe ich einen eigenen autoloader.
Somit keine fertige Lösung für dich, aber etwas zum anregen:
IPSSqueezeBox/module.php at 62c786f02f7941c4b24fd430d3d5bb93e0bb6f75 · Nall-chan/IPSSqueezeBox · GitHub
Michael

Mit Update der phpseclib auf die neueste Version läuft hier wieder alles ohne codeanpassungen.
bg
hoep

Gesendet von iPad mit Tapatalk

Hast Du eine Windows Installation und falls ja wie sieht dein Aufruf (include sowie ssh Aufruf im script) aus und wo genau hast du die phpseclib installiert ? Welche Version nutzt Du , die 1.0.18 oder die 2.0.25 ?

@Nall-chan Danke für den Link. Welche Version hast Du installiert ? die 1.0.18 ? oder die 2.0.25 ?

Schau doch einfach in das Changelog.md der Bibliothek.
Imho 2.0.irgendwas.
Michael

Ja stimmt es ist die 2.0 aber die konnte ich bei mir nicht installieren. Die SSH2.php findet die ‚phpseclib\Crypt\Base‘ nicht. Keine Ahnung warum

Fatal error: Uncaught Error: Class 'phpseclib\Crypt\Base' not found in C:\ProgramData\Symcon\scripts\phpseclib\Net\SSH2.p hp:4594
Stack trace:
#0 C:\ProgramData\Symcon\scripts\phpseclib\Net\SSH2.p hp(1351): phpseclib\Net\SSH2->getSupportedEncryptionAlgorithms()
#1 C:\ProgramData\Symcon\scripts\phpseclib\Net\SSH2.p hp(1288): phpseclib\Net\SSH2->_key_exchange()
#2 C:\ProgramData\Symcon\scripts\phpseclib\Net\SSH2.p hp(2141): phpseclib\Net\SSH2->_connect()
#3 [internal function]: phpseclib\Net\SSH2->_login('YYY', 'XXX')
#4 C:\ProgramData\Symcon\scripts\phpseclib\Net\SSH2.p hp(2125): call_user_func_array(Array, Array)
#5 C:\ProgramData\Symcon\scripts\32355.ips.php(23): phpseclib\Net\SSH2->login('YYY', 'XXXX')
#6 {main}
thrown in C:\ProgramData\Symcon\scripts\phpseclib\Net\SSH2.p hp on line 4594