SSH KO vers machine en debian 12 (algorithme ssh du plugin trop faible)

Hello,

Je ne vais pas tellement avec de solution toute faite parce que je pense pas que l’on puisse y faire quelque chose coté code.

C’est la librairie qu’utilise php-ssh2 qui ne prend pas en charge les nouveaux algorithmes de chiffrement. Il faudrait pouvoir mettre à jour en 1.3.1 car j’ai essayé depuis une bulleyes qui est en 1.2+0.13-4 et je n’arrive pas non plus à établir une connexion avec la fonction php ssh2_connect sur une Debian12 (même noyaux que Proxmox 8).

J’ai essayé de faire une montée de version de cette php-ssh2 depuis une Debian 10 en utilisation un autre repo (sid) mais j’ai une erreur dans l’installation des dépendances … bref ça se fait peut-être mais ça a pas l’air évident. J’aurais tenté de t’aider :slight_smile:

1 « J'aime »

Bonjour,

J’ai eu le même problème avec le #plugin-nut_free.
Et après plusieurs heures de recherche j’ai abouti à la même solution que toi. J’ai bien tenté de passer des paramètres à ssh2_connect mais en vain. Comme le dit Bison le problème c’est la librairie utilisée.

Merci en tout cas pour vos contributions, vais voir pour reussir à upgrade php-ssh2.

Dernier recours sera de me passer du plugin et de faire du ssh en script a la mano mais bon depuis des années ce petit plugin faisait très bien le taf.
J’ai d’ailleurs essayé de chercher qui etait le dev du plugin mais j’ai pas trouvé.

c’est une info facile à trouver:
image

Oui c’est vrai j’avais vu mais je le retrouve pas sur le forum :slight_smile:

Il y avait eu un PR de poussé en 2021 et Phifi avait validé.

Bonjour,

Solution trouvée pour plugin-nut_free en passant sur phpseclib.

Bonjour,

Il y a du taf sur ce plugin pour intégrer!

Il faut:

  • ajouter packages.json avec « php-phpseclib » à installer
  • modifier « monitoring.class.php »:
    ajouter en debut de fichier:

set_include_path(get_include_path() . get_include_path().'/phpseclib');
include('Net/SSH2.php');
include('Crypt/RSA.php');
include('autoload.php');

use phpseclib\Net\SSH2;

modifier tout le code entre les lignes 535 et 942 puis entre 1471 et 1496.

Et ensuite valider!

exemple de modifications a remplacer (dans les grandes lignes!!):

if (!$connection = ssh2_connect($ip,$port)) {
				log::add('Monitoring', 'error', 'connexion SSH KO pour '.$equipement);
				$cnx_ssh = 'KO';
			}else{
				if (!ssh2_auth_password($connection,$user,$pass)){
					log::add('Monitoring', 'error', 'Authentification SSH KO pour '.$equipement);
					$cnx_ssh = 'KO';

par

if (!$sshconnection = new SSH2($ip,$port)){
				log::add('Monitoring', 'error', 'connexion SSH KO pour '.$equipement);
				$cnx_ssh = 'KO';
			}else{
				
				if (!$sshconnection->login($user, $pass)){
				log::add('Monitoring', 'error', 'Authentification SSH KO pour '.$equipement);
					$cnx_ssh = 'KO';

et remplacer tout ce qui ressemble à :

$loadavgoutput = ssh2_exec($connection, $loadavgcmd);
					stream_set_blocking($loadavgoutput, true);
					$loadav = stream_get_contents($loadavgoutput);

par:

$loadavgoutput = $sshconnection->exec($loadavgcmd);
$loadav = $loadavgoutput;  

Ensuite, il y aura forcement des sections à adapter!!!

Stef.

1 « J'aime »

Merci en tout cas de mettre le pied a l’étrier :wink:

Ça serait la même chose pour le plugin #plugin-monitoring ?

Bonjour,

C’est justement pour ce plugin que @Stef74 indique les modifs :wink: dans les grandes lignes.

Oups pas réveillé je pensais qu’on était sur le plugin nut

J’essaye de bricoler sur la VM de test jeedom alors :grin:

Hello,

Je viens de faire quelques tests alors la bonne nouvelle j’ai plus d’erreur ssh ! (en ayant desactivé sur le serveur ssh HostKeyAlgorithms +ssh-rsa,ssh-dss)
La mauvaise y’a plus grand chose qui est récupéré en info lol (la charge cpu est tjs de la partie).

versus normalement

image

Je joins les 2 fichiers que j’ai tuné vis à vis des modifs listées ci dessus.

install.sh.txt (2,4 Ko) ===> pour l’install de php-phpseclib (et donc j’ai relancé les dependances)
Monitoring.class.php.txt (63,7 Ko)

Merci

Disons, que tu n’as pas tout fait! Et je n’ai pas tout regardé!
J’avais ecrit: « modifier tout le code entre les lignes 535 et 942 puis entre 1471 et 1496. »
« et remplacer tout ce qui ressemble à : »

Et il faudrait les logs de http.error.

stef.

Comme je l’ai ecrit,

Il faut ajouter le fichier packages.json.
Cela permet d’installer php-phpseclib lors de la mise à jours et non relancer les dépendances…

Il faut penser end-user qui ne va pas avoir cet automatisme et réflexion.

Je te laisse récupérer le fichier et supprimer « nut-client »!

Stef.

OK,

j’avais pas trop cerné le packages.json (jamais fait avant mais j’ai comparé par rapport aux autres plugin et mis dans plugin info), j’ai corrigé et viré de ce j’avais fait dans install.sh

Je pense avoir fait ce qu’il manquait dans le fichier mais j’en suis tjs au meme résultat ou j’ai tjs rien compris aux modifs. :crazy_face:
Monitoring.class.php.txt (60,6 Ko)

Et ya rien dans http.error et dans event on voit bien qu’il ne retourne pas de valeurs

Je penses que tu n’as pas tout compris! et pas relu mes exemples complet!

Par fatigue, je me suis arrêter à la ligne 787! Je te laisse continuer pour la suite!
Stef.
Monitoring.class.php (1).txt (59,7 Ko)

OK, je me suis flagélé un peu :upside_down_face:

C’est bcp mieux ! Merciii ! Juste l’info CPU avec la température qui est bizarre mais j’avais meme pas l’info avant (ca ressemble plus à une valeur de CPU : 263,2 Mhz mais je me trompe peut etre)

Je mets le fichier si tu vois (encore) des conneries

Monitoring.class.php.txt (59,3 Ko)

En tout cas champagne pour toi @Stef74 ! Je n’aurais jamais trouvé tout cela avec mes mimines !
Je remets la secu ssh en place sur ma prod :slight_smile:

1 « J'aime »

Voila,

Beaucoup mieux!

Pour la température, je n’ai pas regardé le code.

Merci aussi à toi pour le partage de ton fichier! Je penses que tu as compris pk je ne l’ai pas fait moi! :rofl:

Je regarderais plus tard chez moi si j’ai ma même erreurs de remontée de température.
C’est sur le local ou distant?

Stef.

C’est tout qui a dit tout ce qu’i fallait faire c’est la moindre des choses :slight_smile:

C’est en distant

Merde sur ma prod je viens de voir que mes syno n’ont pas appreciés les modifs du fichier avec ca de coché dans ma config :frowning:

vs avant le fichier avant modif

y’aurait donc une partie à laisser dans l’etat pour eviter cela, je cherche en // de mon coté (c’est pour moi à la ligne 627, soit je remet une vielle partie de code ou le nouveau doit etre adapté pour syno)

Bizarre!
Car chez moi il n’y a pas de problemes! Testé avec ton fichier.
image
Stef.