SYSMON local funktioniert aber per ssh auf anderen pi nicht

Begonnen von hdosw, 29 August 2021, 13:32:58

Vorheriges Thema - Nächstes Thema

hdosw

Hallo,
ich habe FHEM auf einem raspberry pi 4 laufen und lass mir per SYSMON bestimmte Parameter wie z.B. cpu_temp anzeigen.
Leider bekomme ich das auf einem zweiten raspberry, auf dem kein fhem installiert ist, nicht hin.

Per ssh kann ich vom fhem-rechner alles auf dem Remote-rechner abfragen. In fhem bekomme ich im log immer dies:

2021.08.29 13:25:39 1: PERL WARNING: Use of uninitialized value $free_version in substitution (s///) at ./FHEM/42_SYSMON.pm line 2290.
2021.08.29 13:25:39 1: PERL WARNING: Use of uninitialized value $free_version in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2291.
pi@radio: Permission denied (publickey).
pi@radio: Permission denied (publickey).
pi@radio: Permission denied (publickey).

Wenn ich auf dem fhem-rechner per shell diese Kommando

ssh -p x pi@radio 'vcgencmd measure_temp'

aufrufe bekomme ich diese Meldung:

temp=37.4'C

(x = der port den ich definiert habe.)

Was kann ich tun, dass mir die gleichen Readings kommen wie beim lokalen Rechner (MODE:local)?





MadMax-FHEM

#1
Zitat von: hdosw am 29 August 2021, 13:32:58
Wenn ich auf dem fhem-rechner per shell diese Kommando

ssh -p x pi@radio 'vcgencmd measure_temp'

aufrufe bekomme ich diese Meldung:

temp=37.4'C

Als WELCHER User führst du das aus?

Als User fhem oder als User pi?

Poste doch mal den kompletten Shell inkl. Prompt wenn du das Kommando auf der Shell ausführst...

Oder teste das Kommando mal in FHEMWeb:


"ssh -p x pi@radio 'vcgencmd measure_temp'"


INKL.!! der doppelten Anführungszeichen VORNE und HINTEN!

EDIT: und poste doch mal ein list des SYSMON-Devices. Da musst du ja remote-User usw. im DEF angeben. Kenne nur Module wo sowas mittels Attribut (sshHost etc.) eingestellt wird...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

hdosw

Hallo Joachim,

danke für die schnelle Antwort  :)
Das Kommando führe ich als user pi aus.
Im FHEMWeb passiert nichts bei der Ausführung mit Anführungszeichen.
Das list sieht so aus:

Internals:
   CFGFN     
   DEF        ssh:pi@radio:x
   FUUID      612b68f7-f33f-ca7b-7945-ae3526fe08f3dffd
   HOST       radio
   INTERVAL_BASE 60
   INTERVAL_MULTIPLIERS 1 1 1 10
   MODE       ssh
   NAME       radio
   NR         3015
   PORT       x
   STATE      <hr><div style="text-align: left;"><font style="font-weight:bold;color:red;">radio last check => 29.08. 16:46</font><br>Laufzeit : <span style="margin-left: 95px;">-</span><br>Speicherauslatung : <span style="margin-left: 10px;">n/a</span><br>CPU-Temperatur : <span style="margin-left: 25px;"><font style="font-weight:bold;color:green;">0.0 °C</font></span>&nbsp<hr>fhem aktiv seit : <span style="margin-left: 45px;">-<hr></span>
   TYPE       SYSMON
   USER       pi
   .attraggr:
   .attreour:
     cpu_temp
     cpu_temp_avg
     cpu_freq
     eth0_diff
     loadavg
     ram
     fs_.*
   .attrminint:
   READINGS:
     2021-08-29 16:46:44   cpu_core_count  1
     2021-08-29 16:46:44   eth0            not available
     2021-08-29 16:46:44   eth0_diff       not available
     2021-08-29 16:46:44   ram             n/a
     2021-08-29 16:40:44   root            Total: 0 MB, Used: 0 MB, 0 %, Available: 0 MB at / (not available)
     2021-08-29 16:46:44   swap            n/a
     2021-08-29 16:46:44   wlan0           not available
     2021-08-29 16:46:44   wlan0_diff      not available
   helper:
     proc_fs    0
     sys_cpu0_freq 0
     sys_cpu0_temp 0
     sys_cpu1_freq 0
     sys_cpu1_temp 0
     sys_cpu2_freq 0
     sys_cpu2_temp 0
     sys_cpu3_freq 0
     sys_cpu3_temp 0
     sys_cpu4_freq 0
     sys_cpu4_temp 0
     sys_cpu5_freq 0
     sys_cpu5_temp 0
     sys_cpu6_freq 0
     sys_cpu6_temp 0
     sys_cpu7_freq 0
     sys_cpu7_temp 0
     sys_cpu_core_num 1
     sys_cpu_freq_rpi_bbb 0
     sys_cpu_num 0
     sys_cpu_temp_bbb 0
     sys_cpu_temp_rpi 0
     sys_fb     0
     sys_power_ac 0
     sys_power_bat 0
     sys_power_usb 0
     u_first_mark 1
     cur_readings_map:
       cpu0_idle_stat CPU0 min/max/avg (idle)
       cpu1_idle_stat CPU1 min/max/avg (idle)
       cpu2_idle_stat CPU2 min/max/avg (idle)
       cpu3_idle_stat CPU3 min/max/avg (idle)
       cpu4_idle_stat CPU4 min/max/avg (idle)
       cpu5_idle_stat CPU5 min/max/avg (idle)
       cpu6_idle_stat CPU6 min/max/avg (idle)
       cpu7_idle_stat CPU7 min/max/avg (idle)
       cpu_bogomips BogoMIPS
       cpu_core_count Number of CPU cores
       cpu_idle_stat CPU min/max/avg (idle)
       cpu_model_name CPU model name
       date       Date
       eth0       Network adapter eth0
       eth0_diff  Network adapter eth0 (diff)
       eth0_ip    Network adapter eth0 (IP)
       eth0_ip6   Network adapter eth0 (IP6)
       eth0_rx    Network adapter eth0 (RX)
       eth0_speed Network adapter eth0 (speed)
       eth0_tx    Network adapter eth0 (TX)
       fhemstarttime Fhem start time
       fhemstarttime_text Fhem start time
       fhemuptime System up time
       fhemuptime_text FHEM up time
       idletime   Idle time
       idletime_text Idle time
       io_sda     TEST
       io_sda_diff TEST
       io_sda_raw TEST
       loadavg    Load average
       loadavg_1  Load average 1
       loadavg_15 Load average 15
       loadavg_5  Load average 5
       ram        RAM
       ram_free   RAM free
       ram_free_percent RAM free %
       ram_total  RAM total
       ram_used   RAM used
       ram_used_stat RAM used stat
       root       Filesystem /
       starttime  System start time
       starttime_text System start time
       stat_cpu   CPU statistics
       stat_cpu0  CPU0 statistics
       stat_cpu0_diff CPU0 statistics (diff)
       stat_cpu0_percent CPU0 statistics (diff, percent)
       stat_cpu0_text CPU0 statistics (text)
       stat_cpu1  CPU1 statistics
       stat_cpu1_diff CPU1 statistics (diff)
       stat_cpu1_percent CPU1 statistics (diff, percent)
       stat_cpu1_text CPU1 statistics (text)
       stat_cpu2  CPU2 statistics
       stat_cpu2_diff CPU2 statistics (diff)
       stat_cpu2_percent CPU2 statistics (diff, percent)
       stat_cpu2_text CPU2 statistics (text)
       stat_cpu3  CPU3 statistics
       stat_cpu3_diff CPU3 statistics (diff)
       stat_cpu3_percent CPU3 statistics (diff, percent)
       stat_cpu3_text CPU3 statistics (text)
       stat_cpu4  CPU4 statistics
       stat_cpu4_diff CPU4 statistics (diff)
       stat_cpu4_percent CPU4 statistics (diff, percent)
       stat_cpu4_text CPU4 statistics (text)
       stat_cpu5  CPU5 statistics
       stat_cpu5_diff CPU5 statistics (diff)
       stat_cpu5_percent CPU5 statistics (diff, percent)
       stat_cpu5_text CPU5 statistics (text)
       stat_cpu6  CPU6 statistics
       stat_cpu6_diff CPU6 statistics (diff)
       stat_cpu6_percent CPU6 statistics (diff, percent)
       stat_cpu6_text CPU6 statistics (text)
       stat_cpu7  CPU7 statistics
       stat_cpu7_diff CPU7 statistics (diff)
       stat_cpu7_percent CPU7 statistics (diff, percent)
       stat_cpu7_text CPU7 statistics (text)
       stat_cpu_diff CPU statistics (diff)
       stat_cpu_idle_percent CPU statistics idle %
       stat_cpu_io_percent CPU statistics io %
       stat_cpu_irq_percent CPU statistics irq %
       stat_cpu_nice_percent CPU statistics nice %
       stat_cpu_percent CPU statistics (diff, percent)
       stat_cpu_sirq_percent CPU statistics sirq %
       stat_cpu_sys_percent CPU statistics sys %
       stat_cpu_text CPU statistics (text)
       stat_cpu_user_percent CPU statistics user %
       swap       swap
       swap_free  swap free
       swap_total swap total
       swap_used  swap used
       swap_used_percent swap used %
       swap_used_stat swap used stat
       uptime     System up time
       uptime_text System up time
       wlan0      Network adapter wlan0
       wlan0_diff Network adapter wlan0 (diff)
       wlan0_ip   Network adapter wlan0 (IP)
       wlan0_ip6  Network adapter wlan0 (IP6)
       wlan0_rx   Network adapter wlan0 (RX)
       wlan0_speed Network adapter wlan0 (speed)
       wlan0_tx   Network adapter wlan0 (TX)
     excludes:
     shadow_map:
       cpu_core_count 1
       eth0       not available
       eth0_diff  not available
       ram        n/a
       root       Total: 0 MB, Used: 0 MB, 0 %, Available: 0 MB at / (not available)
       swap       n/a
       wlan0      not available
       wlan0_diff not available
Attributes:
   event-on-update-reading cpu_temp,cpu_temp_avg,cpu_freq,eth0_diff,loadavg,ram,fs_.*
   group      IT
   room       IT
   stateFormat { my $ret = "<hr><div style=\"text-align: left;\">";
        $ret .= "<font style=\"font-weight:bold;color:red;\">";
$ret .= "radio last check => ";
$ret .= POSIX::strftime("%d.%m. %H:%M",localtime);
        $ret .= "<\/font><br>Laufzeit : <span style=\"margin-left: 95px;\">";
        $ret .= ReadingsVal("radio","uptime_text","-");
        $ret .= "<\/span>";
        $ret .= "<br>Speicherauslatung : <span style=\"margin-left: 10px;\">";
        $ret .= ReadingsVal("radio","ram","-");
        $ret .= "<\/span>";
$ret .= "<br>CPU-Temperatur : <span style=\"margin-left: 25px;\">";
        $ret .= "<font style=\"font-weight:bold;color:";
        if (ReadingsNum("radio","cpu_temp",0) < 40) {
            $ret .= "green";
        } elsif (ReadingsNum("radio","cpu_temp",0) < 50) {
            $ret .= "blue";
        } else {
            $ret .= "red";
        }
        $ret .= ";\">".sprintf("%.1f", ReadingsNum("radio","cpu_temp",0))." °C";
        $ret .= "</font></span>&nbsp";
        $ret .= "<hr>fhem aktiv seit : <span style=\"margin-left: 45px;\">";
        $ret .= ReadingsVal("radio","fhemuptime_text","-");
        $ret .= "<hr><\/span>";
}


Was ich jetzt festgestellt habe ist wenn ich das Kommando mit sudo ausführe kommt die gleiche Meldung wie im logfile nähmlich
pi@radio: Permission denied (publickey).
folglich habe ich ein Rechte Problem. Unter welchem user setzt denn SYSMON das kommando ab?

Gruß, Dieter

MadMax-FHEM

Steht denn was im fhem-Log, wenn du es in FHEMWeb ausführst?

Also (dachte ich mir schon):

du hast passwortlosen Zugang als User pi (lokal) eingerichtet, um als User pi (remote) einloggen zu können (ohne Passwort).

Du musst das aber für den User fhem einrichten...

Also dass User fhem (lokal) als User pi (remote) OHNE Passwort einloggen und Kommandos ausführen darf...

Wenn du "sudo" davor stellst, wird das Kommando als "root" (ungleich User pi) ausgeführt, ergo geht es nat. damit auch nicht, weil eben nur der User pi remote ohne Passwort darf (aktuell)...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Otto123

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

hdosw

ja dann steht da wieder permission denied  >:(

ich hab jetzt auf dem fernen pi einen user fhem eingerichtet den ich per ssh ohne Kennwort erreichen kann aber es geht trotzdem nicht.
Das mit sudo sollte nur ein Hinweis sein. Dass es damit nicht funktioniert war mir eigentlich klar.

Ich habe das device jetzt wieder gelöscht und werde mich nach anderen Möglichkeiten umsehen.

Vielen Dank für Deine Mühe.

Gruß, Dieter

MadMax-FHEM

#6
Ein User fhem auf dem remote System hilft nicht (hast du ja gemerkt).

Also es ist so:

ein User A auf System A (hier fhem auf dem fhem-Rechner) will sich als User B auf System B einloggen OHNE PW (dabei kann der NAME des Users B auf System B durchaus DERSELBE sein, also auch fhem ABER: es ist Trotzdem ein ANDERER User, nämlich einmal fhem@SystemA und einmal fhem@SystemB und die heißen zwar gleich sind aber komplett andere User ;)  )

Damit das ohne PW geht braucht User A auf System A Schlüssel, die vom System B (für User B) gültig sind.
Die liegen normalerweise:

/HomeUser/.ssh

D.h. für den User pi eben unter: /home/pi/.ssh
Für den User fhem aber unter: /opt/fhem/.ssh

D.h. wenn du lokal (System A) als User pi unterwegs bist, dann klappt das, weil eben die Schlüssel unter /home/pi/.ssh passen
Als User fhem (lokal) hast du vermutlich gar keine Schlüssel unter /opt/fhem/.ssh und selbst wenn, dann sind diese eben auf dem remote System (System B) "unbekannt"...

Heißt du brauchst entweder generell noch Schlüssel für den User fhem lokal (/opt/fhem/.ssh) oder die die da sind müssen eben auch auf dem remote System (für einen Login als DORTIGER User B / pi) "gültig" sein/gemacht werden...

EDIT: genau das wird eben in der verlinkten Anleitung beschrieben... 8)

EDIT:
Zitat von: hdosw am 29 August 2021, 18:27:31
ja dann steht da wieder permission denied  >:(
ich nehme an wenn du ins fhem Log schaust? Ja ist klar, das Kommando mit den " " in FHEMWeb wird ja als User fhem ausgeführt. Damit eben gleiches Ergebnis. War nur ein "double-check" (sorry)...

EDIT:
fhem@SystemA -> ssh pi@SystemB
Statt Passwort nimmt fhem@SystemA eben die Schlüssel in /opt/fhem/.ssh (sofern vorhanden) und reicht die an SystemB weiter mit der Bitte um Prüfung, ob damit eben pi@SystemB eingelogged werden darf.
D.h. auf SystemB wird geprüft, ob die Schlüssel für pi@SystemB gültig sind.
(gleiches wie PW-Prüfung)
Sind sie gültig, dann ist fhem@SystemA eingelogged als pi@SystemB und kann dort eben alles was der User pi (pi@SystemB) eben so darf... Bzw. wird eben jedes ssh-Kommando auf dem SystemB als pi@SystemB ausgeführt...

Ist für fhem@SystemA kein Schlüssel da (/opt/fhem/.ssh) ODER die Prüfung "ungültig" (gleiches wie wenn du ein falsches PW eingibst und das ist ja auch das PW des Users pi@SystemB [auch wenn es gleich ist aber es wird trotzdem auf SystemB geprüft ;)  ]) dann darfst du auf SystemB halt auch nix ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

hdosw

aber ich gebe doch bei der definition

define sysmon SYSMON ssh:USER@HOST:PORT

an und damit ist doch der User auf dem entfernten System bekannt und damit sollte es doch funktionieren.
Warum geht das auf der Shell und in fhem nicht?
Ich habe auf beiden Rechnern mehrere Benutzer eingerichtet welche ich alle per ssh erreichen kann,
egal welcher Benutzer der Client und welcher der Server ist. Linux ist mir durchaus bekannt, fhem nicht.


Otto123

Zitat von: hdosw am 29 August 2021, 18:56:51
...
Warum geht das auf der Shell und in fhem nicht?
...
Linux ist mir durchaus bekannt, fhem nicht.
Weil FHEM unter dem Benutzer fhem läuft und Du eine Shell/Umgebung für User fhem öffnen musst. Meine Beschreibung versucht zu lesen?
Geht z.B. mit
sudo -su fhem
Aber an was Du scheiters ist ein reines Linux Problem und hat mit FHEM nichts zu tun.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

hdosw

Hallo Otto,
es läuft jetzt wie gewünscht  :) dank Deiner Anleitung. Ich danke Dir ganz herzlich dafür.
Der Befehl sudo -su hat mich auf die Spur gebracht. Alles andere kannte ich bereits.
Danke auch an Joachim.

Gruß, Dieter

Rewe2000

#10
Hallo,

ich hänge mich nochmals hier an, da ich genau das gleiche Problem habe und auch nach mehrmaligem lesen der verlinkten Blogs und Beiträge mein Sysmon nicht zum laufen bekomme.
Irgendwie habe ich Probleme mir den Rechten unter Linux oder vermische User, ich schaffe es aber nicht alleine diese Probleme zu lösen.
sshpass wollte ich aus Sicherheitsgründen nicht verwenden, deshalb der Versuch mit ssh pulic key.

Aber nun der Reihe nach:

  • Auf einem Raspi4 (Fhem-Server - statische IP 192.168.50.33) läuft Fhem
  • Auf dem zweiten Raspi4 (SQL-Server - statische IP 192.168.50.37) läuft MariaDB
  • Alle Syteme sind auf den neuesten Stand
  • Auf beiden Raspi4 habe ich den Benutzer reinhard und fhem angelegt
  • Vorgegangen bin ich nach der Anleitung von Otto https://heinz-otto.blogspot.com/2017/01/per-ssh-remote-befehle-direkt-ausfuhren.html
  • Sysmon läuft auf dem Fhem-Server problemlos, lediglich bei dem 2. Sysmon Device für den SQL-Server bekomme ich keine Verbindung
  • Ein Passwort habe ich in Sysmon über set password definiert, habe es aber auch mit neuem Sysmon ohne Password versucht, da ich vermute, dass dieses nur für sshpass notwendig ist

Mein Sysmon list:
Internals:
   DEF        ssh:reinhard@192.168.50.37:22 1 1 1 10
   FUUID      63ac5294-f33f-7df9-eb56-d290f4ed532898aa
   HOST       192.168.50.37
   INTERVAL_BASE 60
   INTERVAL_MULTIPLIERS 1 1 1 10
   MODE       ssh
   NAME       sysmon_SQL_Server
   NOTIFYDEV  global,TYPE=SYSMON
   NR         551
   NTFY_ORDER 50-sysmon_SQL_Server
   PORT       22
   STATE      Inactive
   TYPE       SYSMON
   USER       reinhard
   eventCount 2
   READINGS:
     2022-12-29 19:43:07   cpu_core_count  1
     2022-12-29 19:43:07   eth0            not available
     2022-12-29 19:43:07   eth0_diff       not available
     2022-12-29 19:43:07   ram             n/a
     2022-12-29 19:43:07   root            Total: 0 MB, Used: 0 MB, 0 %, Available: 0 MB at / (not available)
     2022-12-29 19:43:07   swap            n/a
     2022-12-29 19:43:07   wlan0           not available
     2022-12-29 19:43:07   wlan0_diff      not available
   helper:
     sys_cpu0_freq 0
     sys_cpu0_temp 0
     sys_cpu1_freq 0
     sys_cpu1_temp 0
     sys_cpu2_freq 0
     sys_cpu2_temp 0
     sys_cpu3_freq 0
     sys_cpu3_temp 0
     sys_cpu4_freq 0
     sys_cpu4_temp 0
     sys_cpu5_freq 0
     sys_cpu5_temp 0
     sys_cpu6_freq 0
     sys_cpu6_temp 0
     sys_cpu7_freq 0
     sys_cpu7_temp 0
     sys_cpu_freq_rpi_bbb 0
     sys_cpu_temp_bbb 0
     sys_cpu_temp_rpi 0
     sys_fb     0
     sys_power_ac 0
     sys_power_bat 0
     sys_power_usb 0
     u_first_mark 1
     cur_readings_map:
       cpu0_idle_stat CPU0 min/max/avg (idle)
       cpu1_idle_stat CPU1 min/max/avg (idle)
       cpu2_idle_stat CPU2 min/max/avg (idle)
       cpu3_idle_stat CPU3 min/max/avg (idle)
       cpu4_idle_stat CPU4 min/max/avg (idle)
       cpu5_idle_stat CPU5 min/max/avg (idle)
       cpu6_idle_stat CPU6 min/max/avg (idle)
       cpu7_idle_stat CPU7 min/max/avg (idle)
       cpu_bogomips BogoMIPS
       cpu_core_count Number of CPU cores
       cpu_idle_stat CPU min/max/avg (idle)
       cpu_model_name CPU model name
       date       Date
       eth0       Network adapter eth0
       eth0_diff  Network adapter eth0 (diff)
       eth0_ip    Network adapter eth0 (IP)
       eth0_ip6   Network adapter eth0 (IP6)
       eth0_rx    Network adapter eth0 (RX)
       eth0_speed Network adapter eth0 (speed)
       eth0_tx    Network adapter eth0 (TX)
       fhemstarttime Fhem start time
       fhemstarttime_text Fhem start time
       fhemuptime System up time
       fhemuptime_text FHEM up time
       idletime   Idle time
       idletime_text Idle time
       io_sda     TEST
       io_sda_diff TEST
       io_sda_raw TEST
       loadavg    Load average
       loadavg_1  Load average 1
       loadavg_15 Load average 15
       loadavg_5  Load average 5
       ram        RAM
       ram_free   RAM free
       ram_free_percent RAM free %
       ram_total  RAM total
       ram_used   RAM used
       ram_used_stat RAM used stat
       root       Filesystem /
       starttime  System start time
       starttime_text System start time
       stat_cpu   CPU statistics
       stat_cpu0  CPU0 statistics
       stat_cpu0_diff CPU0 statistics (diff)
       stat_cpu0_percent CPU0 statistics (diff, percent)
       stat_cpu0_text CPU0 statistics (text)
       stat_cpu1  CPU1 statistics
       stat_cpu1_diff CPU1 statistics (diff)
       stat_cpu1_percent CPU1 statistics (diff, percent)
       stat_cpu1_text CPU1 statistics (text)
       stat_cpu2  CPU2 statistics
       stat_cpu2_diff CPU2 statistics (diff)
       stat_cpu2_percent CPU2 statistics (diff, percent)
       stat_cpu2_text CPU2 statistics (text)
       stat_cpu3  CPU3 statistics
       stat_cpu3_diff CPU3 statistics (diff)
       stat_cpu3_percent CPU3 statistics (diff, percent)
       stat_cpu3_text CPU3 statistics (text)
       stat_cpu4  CPU4 statistics
       stat_cpu4_diff CPU4 statistics (diff)
       stat_cpu4_percent CPU4 statistics (diff, percent)
       stat_cpu4_text CPU4 statistics (text)
       stat_cpu5  CPU5 statistics
       stat_cpu5_diff CPU5 statistics (diff)
       stat_cpu5_percent CPU5 statistics (diff, percent)
       stat_cpu5_text CPU5 statistics (text)
       stat_cpu6  CPU6 statistics
       stat_cpu6_diff CPU6 statistics (diff)
       stat_cpu6_percent CPU6 statistics (diff, percent)
       stat_cpu6_text CPU6 statistics (text)
       stat_cpu7  CPU7 statistics
       stat_cpu7_diff CPU7 statistics (diff)
       stat_cpu7_percent CPU7 statistics (diff, percent)
       stat_cpu7_text CPU7 statistics (text)
       stat_cpu_diff CPU statistics (diff)
       stat_cpu_idle_percent CPU statistics idle %
       stat_cpu_io_percent CPU statistics io %
       stat_cpu_irq_percent CPU statistics irq %
       stat_cpu_nice_percent CPU statistics nice %
       stat_cpu_percent CPU statistics (diff, percent)
       stat_cpu_sirq_percent CPU statistics sirq %
       stat_cpu_sys_percent CPU statistics sys %
       stat_cpu_text CPU statistics (text)
       stat_cpu_user_percent CPU statistics user %
       swap       swap
       swap_free  swap free
       swap_total swap total
       swap_used  swap used
       swap_used_percent swap used %
       swap_used_stat swap used stat
       uptime     System up time
       uptime_text System up time
       wlan0      Network adapter wlan0
       wlan0_diff Network adapter wlan0 (diff)
       wlan0_ip   Network adapter wlan0 (IP)
       wlan0_ip6  Network adapter wlan0 (IP6)
       wlan0_rx   Network adapter wlan0 (RX)
       wlan0_speed Network adapter wlan0 (speed)
       wlan0_tx   Network adapter wlan0 (TX)
   hmccu:
Attributes:
   DbLogExclude .*


Den public key für den User reinhard habe ich auf den Fhem-Server in der Linux Konsole wie folgt erstellt, dieser funktioniert auch von der Konsole aus problemlos und über ssh kommt eine Verbindung ohne Kennwortabfrage zustande:
reinhard@Fhem-Bullseye-SSD:~ $ whoami
reinhard
reinhard@Fhem-Bullseye-SSD:~ $ ls -lha .ssh/id_rsa.pub
ls: Zugriff auf '.ssh/id_rsa.pub' nicht möglich: Datei oder Verzeichnis nicht gefunden
reinhard@Fhem-Bullseye-SSD:~ $ ssh-keygen -f ~/.ssh/id_rsa -P "" -t rsa
Generating public/private rsa key pair.
Your identification has been saved in /home/reinhard/.ssh/id_rsa
Your public key has been saved in /home/reinhard/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx reinhard@Fhem-Bullseye-SSD
The key's randomart image is:
+---[RSA 3072]----+
|         xxxxxxx.|
|          xxxxxxx|
|         xxxxxxx|
|        xxxxxxxx|
|        xxxxxxx|
|      xxxxxxxx |
|       xxxxxxx.|
|        xxxxxxx|
|              xx|
+----[SHA256]-----+
reinhard@Fhem-Bullseye-SSD:~ $ ssh-copy-id -i ~/.ssh/id_rsa reinhard@192.168.50.37
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/reinhard/.ssh/id_rsa.pub"
The authenticity of host '192.168.50.37 (192.168.50.37)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
reinhard@192.168.50.37's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'reinhard@192.168.50.37'"
and check to make sure that only the key(s) you wanted were added.

reinhard@Fhem-Bullseye-SSD:~ $ ssh reinhard@192.168.50.37

Connection to 192.168.50.37 closed.
reinhard@Fhem-Bullseye-SSD:~ $



Nachdem Sysmon (siehe Listing oben) keine Verbindung aufbauen konnte, habe ich das Gleiche für den User fhem versucht:
reinhard@Fhem-Bullseye-SSD:~ $ su fhem
Passwort:
fhem@Fhem-Bullseye-SSD:/home/reinhard$ cd
fhem@Fhem-Bullseye-SSD:~$ whoami
fhem
fhem@Fhem-Bullseye-SSD:~$ ls -lha .ssh/id_rsa.pub
ls: Zugriff auf '.ssh/id_rsa.pub' nicht möglich: Datei oder Verzeichnis nicht gefunden
fhem@Fhem-Bullseye-SSD:~$ ssh-keygen -f ~/.ssh/id_rsa -P "" -t rsa
Generating public/private rsa key pair.
Your identification has been saved in /opt/fhem/.ssh/id_rsa
Your public key has been saved in /opt/fhem/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fhem@Fhem-Bullseye-SSD
The key's randomart image is:
+---[RSA 3072]----+
|          x     |
|      x   x      |
| x         x     |
|. .              |
|xxxxxxxxxxxx |
|xxxxxxxxxxxx|
|xxxxxxxxxxxxx|
|xxxxxxxxxxx|
|xxxxxxxxxxxxx|
+----[SHA256]-----+
fhem@Fhem-Bullseye-SSD:~$ ssh-copy-id -i ~/.ssh/id_rsa fhem@192.168.50.37
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/opt/fhem/.ssh/id_rsa.pub"
The authenticity of host '192.168.50.37 (192.168.50.37)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
fhem@192.168.50.37's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'fhem@192.168.50.37'"
and check to make sure that only the key(s) you wanted were added.

fhem@Fhem-Bullseye-SSD:~$ ssh fhem@192.168.50.37
fhem@192.168.50.37's password:


Unter dem user fhem ist bei mir keine ssh Verbindung ohne Passwortabfrage möglich, obwohl die Einrichtung über die Konsole keine Fehler brachte.

Fehlermeldungen im Fhem Log mit set password :
2022.12.29 19:44:07 1: PERL WARNING: Use of uninitialized value in int at ./FHEM/42_SYSMON.pm line 3538.
sh: 1: sshpass: not found
sh: 1: sshpass: not found
2022.12.29 19:44:07 1: PERL WARNING: Use of uninitialized value in int at ./FHEM/42_SYSMON.pm line 3669.
sh: 1: sshpass: not found
2022.12.29 19:44:07 1: PERL WARNING: Use of uninitialized value $free_version in substitution (s///) at ./FHEM/42_SYSMON.pm line 2312.
2022.12.29 19:44:07 1: PERL WARNING: Use of uninitialized value $free_version in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2313.
sh: 1: sshpass: not found
sh: 1: sshpass: not found
sh: 1: sshpass: not found


Fehlermeldungen im Fhem Log ohne set password und verbose 5 :
2022.12.29 20:55:42 5: SYSMON sysmon_SQL_Server: Set.781 sysmon_SQL_Server ?
2022.12.29 20:55:42 5: SYSMON sysmon_SQL_Server: Set.781 sysmon_SQL_Server ?
2022.12.29 20:55:42 5: SYSMON sysmon_SQL_Server: Get.699 sysmon_SQL_Server ?
2022.12.29 20:56:39 5: SYSMON sysmon_SQL_Server: updateReadings.1093
2022.12.29 20:56:39 5: SYSMON sysmon_SQL_Server: blockingCall.987 sysmon_SQL_Server,
2022.12.29 20:56:39 5: SYSMON sysmon_SQL_Server: readPassword.3835 Read password from file
2022.12.29 20:56:39 5: SYSMON sysmon_SQL_Server: Exec_Ssh.4248 Execute 'uptime' by SSH
2022.12.29 20:56:39 5: SYSMON sysmon_SQL_Server: Exec_Ssh.4261 Call: 'ssh  -p 22 reinhard@192.168.50.37 "uptime"'
sh: 1: sshpass: not found
2022.12.29 20:56:39 5: SYSMON sysmon_SQL_Server: Exec_Ssh.4279 Result undef
2022.12.29 20:56:39 5: SYSMON sysmon_SQL_Server: readPassword.3835 Read password from file
2022.12.29 20:56:39 5: SYSMON sysmon_SQL_Server: Exec_Ssh.4248 Execute 'free -V' by SSH
2022.12.29 20:56:39 5: SYSMON sysmon_SQL_Server: Exec_Ssh.4261 Call: 'ssh  -p 22 reinhard@192.168.50.37 "free -V"'
sh: 1: sshpass: not found
2022.12.29 20:56:39 5: SYSMON sysmon_SQL_Server: Exec_Ssh.4279 Result undef
2022.12.29 20:56:39 5: SYSMON sysmon_SQL_Server: readPassword.3835 Read password from file
2022.12.29 20:56:39 5: SYSMON sysmon_SQL_Server: Exec_Ssh.4248 Execute 'LANG=en free' by SSH
2022.12.29 20:56:39 5: SYSMON sysmon_SQL_Server: Exec_Ssh.4261 Call: 'ssh  -p 22 reinhard@192.168.50.37 "LANG=en free"'
sh: 1: sshpass: not found
2022.12.29 20:56:39 5: SYSMON sysmon_SQL_Server: Exec_Ssh.4279 Result undef
2022.12.29 20:56:39 5: SYSMON sysmon_SQL_Server: getNetworkInfo.2732 get eth0
2022.12.29 20:56:39 5: SYSMON sysmon_SQL_Server: readPassword.3835 Read password from file
2022.12.29 20:56:39 5: SYSMON sysmon_SQL_Server: Exec_Ssh.4248 Execute '/sbin/ifconfig eth0 2>&1' by SSH
2022.12.29 20:56:39 5: SYSMON sysmon_SQL_Server: Exec_Ssh.4261 Call: 'ssh  -p 22 reinhard@192.168.50.37 "/sbin/ifconfig eth0 2>&1"'
sh: 1: sshpass: not found
2022.12.29 20:56:39 5: SYSMON sysmon_SQL_Server: Exec_Ssh.4279 Result undef
2022.12.29 20:56:39 5: SYSMON sysmon_SQL_Server: getNetworkInfo.2744 SYSMON_getNetworkInfo>>>>>>>>>>>>>>>>$VAR1 = undef;

2022.12.29 20:56:39 5: SYSMON sysmon_SQL_Server: getNetworkInfo.2732 get wlan0
2022.12.29 20:56:39 5: SYSMON sysmon_SQL_Server: readPassword.3835 Read password from file
2022.12.29 20:56:39 5: SYSMON sysmon_SQL_Server: Exec_Ssh.4248 Execute '/sbin/ifconfig wlan0 2>&1' by SSH
2022.12.29 20:56:39 5: SYSMON sysmon_SQL_Server: Exec_Ssh.4261 Call: 'ssh  -p 22 reinhard@192.168.50.37 "/sbin/ifconfig wlan0 2>&1"'
sh: 1: sshpass: not found
2022.12.29 20:56:39 5: SYSMON sysmon_SQL_Server: Exec_Ssh.4279 Result undef
2022.12.29 20:56:39 5: SYSMON sysmon_SQL_Server: getNetworkInfo.2744 SYSMON_getNetworkInfo>>>>>>>>>>>>>>>>$VAR1 = undef;

2022.12.29 20:56:39 5: SYSMON sysmon_SQL_Server: blockingFinish.1074 name|sysmon_SQL_Server|wlan0_diff|not available|ram|n/a|cpu_core_count|1|wlan0|not available|eth0_diff|not available|eth0|not available|swap|n/a
2022.12.29 20:56:39 5: SYSMON sysmon_SQL_Server: updateReadings.1093


Kann mir da bitte jemand noch einen Tipp geben was ich da falsch verstanden habe oder was ich da falsch mache.
Grundsätzlich brauche ich nur einen einzigen user für die ssh Verbindung, zwei User habe ich nur angelegt, als ich mit dem User reinhard keine Verbindung bekam.


Gruß Reinhard
Fhem 6.3 auf Raspberry Pi4 SSD mit Raspbian Bookworm, Homematic, Homematic IP, CCU3 mit RapberryMatic, WAGO 750-880, E3DC S10E Hauskraftwerk, E3DC Wallbox, my-PV AC ELWA-E Heizstab, Fritz!Box 7590, KIA Bluelinky

MadMax-FHEM

#11
Also das Anlegen der Schlüssel etc. für den User Reinhard auf System A war naja (sinnlos) ;)

Weil ja Sysmon unter dem User fhem läuft...

Auf dem Remote-System B willst du dort als User fhem (der kann sich normalerweise nicht einloggen!) tätig werden oder (eher wahrscheinlich) als User Reinhard.
Dann musst du den unter fhem erzeugten Schlüssel auf System A in das ssh-Verzeichnis des User Reinhard auf System B kopieren und NICHT User fhem auf System B.

Also:

User fhem auf System A will sich als User Reinhard auf System B einloggen OHNE Passwort und dann auf System B als User Reinhard eben Sysmon ausführen.
Dazu muss aber auch User Reinhard auf System B Sysmon ausführen dürfen und er muss sich prinzipiell mit einer Shell einloggen können (also lokal auf System B).

Wenn User Reinhard sich auf System B sich nicht lokal einloggen kann oder Sysmon nicht ausführen darf (ohne PW-Eingabe), dann wird das so nicht klappen...

Ist etwas verwirrend welcher User nun auf welchem System ist und sich einloggt usw. ;)

Und: die User müssen auf beiden Systemen nicht dieselben sein bzw. nicht gleich heißen, weil es selbst bei dem gleichen Namen andere User sind, außer du hast einen Domänen-Controler/zentrale User-Verwaltung (ist meist auch nicht so)...

Also User fhem auf System A kann sich durchaus als User Reinhard auf System B einloggen.
Alles was dann passiert ist als würde es User Reinhard auf System B direkt selbst tun.
Alles was User Reinhard auf System B nicht kann/darf kann auch der remote eingeloggte User fhem von System A nicht...
Und wenn User Reinhard auf System B für irgendwas ein PW eingeben muss, dann muss das auch der remote eingeloggte User fhem tun (weil er ja nicht mehr fhem@A sondern in dem Moment ja Reinhard@B ist ;)  )...

EDIT:
Zitat
ssh  -p 22 reinhard@192.168.50.37 "uptime"
Das heißt auf System B willst du (oder Sysmon) als User Reinhard zugreifen und nicht als User fhem...
D.h. ich denke das ist so richtig aber dein passwortloser Zugang für User fhem auf System A wurde ja als User fhem auf System B eingerichtet.
Es hätte aber auf System B der User Reinhard sein sollen (denke ich)...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Otto123

ganz am Anfang von meinem 5 Jahre alten Artikel habe ich aktuelle Links platziert. Da wäre vor allem der hier:
https://heinz-otto.blogspot.com/2020/09/ssh-mit-public-key.html
Vielleicht ist diese kurze schrittweise Anleitung in Ergänzung zu Joachims Ausführung gut?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Rewe2000

Hallo Joachim, hallo Otto,

vielen Dank euch beiden für die Geduld mit mir.

Je mehr ich mich versuche einzulesen, desto verwirrter werde ich, was ich hier genau einrichten muss, deshalb will ich es mal Schritt für Schritt aufbrechen.

@Joachim:
Grundsätzlich will ich nur mit Sysmon, welcher auf SystemA (Fhem-Server) unter dem User fhem läuft, die Daten von meinem SystemB (SQL-Server) unter dem User reinhard abholen. Wenn ich dich richtig verstanden habe, so muss ich auf meinem SystemA (Fhem-Server) nur den ssh Zugang, unter dem User fhem, für den User reinhard auf dem SystemB (SQL-Server) einrichten.

Das denke ich, sollte doch auch dann so passen.

Auf dem SystemA, auf welchem Fhem läuft, liegen die Schlüsseldateien und eine Datei known_hosts unter /opt/fhem/.ssh
Auf dem SystemB, auf welches ich zugreifen will, liegt die Datei authorized_keys unter /home/reinhard/.ssh
Weitere key-Dateien habe ich auf beiden Systemen nicht gefunden.

Aktuell bekomme ich eine Antwort vom SystemB (SQL-Server) wenn ich in die Kommandozeile von Fhem folgendes eintrage:
{qx(ssh reinhard\@192.168.50.37 hostname)}
SQL-Bullseye-SSD


Somit bekomme ich dann doch unter dem User fhem eine Verbindung auf SystemB und kann mich hier Passwortlos als User Reinhard einloggen und bekomme hier den korrekten Hostname von SystemB zurück.

Habe ich da noch einen Denkfehler?
Somit sollte doch dann Sysmon wie in meinem Beitrag1 als List enthalten funktionieren?

Sollten hier noch Denkfehler von mir enthalten sein, so muss ich erst diese beseitigen, bevor ich mich Sysmon widme, weshalb ich hier trotzdem keine Verbindung bekomme.
Bisher habe ich mit Hilfe vom Forum alles unter Fhem zum laufen bekommen, da will ich dóch mit Sysmon nicht scheitern:- :)

@Otto: Den verlinkten Beitrag von dir habe ich schon gefunden und auch mehrmals gelesen und nach diesem auch meinen ssh Zugang eingestellt, aber das mit den Usern hat mich total verwirrt

Noch eine Grundsätzliche Frage.
Reicht es aus wenn ich den ssh-Zugang wieder rückgängig machen will nur die Keys in den jeweiligen Verzeichnissen zu löschen oder muss da unter Linux noch mehr erfolgen?


Gruß Reinhard
Fhem 6.3 auf Raspberry Pi4 SSD mit Raspbian Bookworm, Homematic, Homematic IP, CCU3 mit RapberryMatic, WAGO 750-880, E3DC S10E Hauskraftwerk, E3DC Wallbox, my-PV AC ELWA-E Heizstab, Fritz!Box 7590, KIA Bluelinky

Otto123

#14
Hallo Reinhard,

klingt alles gut und richtig. Dein User fhem auf SystemA hat passwortlosen publickey ssh Zugang zu SystemB als User Reinhard.

Für Aktionen auf SystemB muss der dortige User Reinhard aber auch Rechte haben. Das wird ev. noch ein Punkt bei sysmon sein. Da muss ich selbst noch mal schauen, ich vermute sysmon braucht sudo. (Auch dafür habe ich mal einen Artikel geschrieben, nur musst Du das für user Reinhard auf dem SystemB machen)

Wenn Du den passwortlosen ssh Zugang auf SystemB wieder löschen willst musst Du nicht die keys löschen sondern die Datei authorized_keys auf SystemB und wenn Du willst auch die  known_hosts  auf SystemA. Oder Du löschst den Hosteintrag mit ssh-keygen -R anstatt die komplette known_hosts.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz