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)?
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
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> <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> ";
$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
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
Hi,
vielleicht hilft meine Beschreibung?
https://heinz-otto.blogspot.com/2020/09/ssh-mit-public-key.html
Gruß Otto
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
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
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.
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.
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
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 (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
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
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?
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
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 (https://heinz-otto.blogspot.com/2017/08/raspberry-ausschalten-mit-fhem.html) 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
Gut dein Versuch zeigt aber "nur", dass User Reinhard auf System B "hostname" ohne Passwort und ohne sudo "darf"/kann...
Wie sieht es bei anderen Komandos aus?
Weil wie geschrieben, in dem Moment wo du ssh reinhard@SystemB machst, ist es genau so als ob du dich lokal bei System B als Reinhard eingeloggt hättest...
Alles was du dann als User Reinhard (ohne sudo) kannst, sollte dann auch als User fhem von System A mittels ssh gehen...
ABER: wenn du was tun willst, dass User Reinhard auf System B NICHT ohne sudo MIT PW darf, dann kommt die PW-Abfrage. Aber: das ist dann nicht die zum Einloggen (das ist ja mittels Keys schon geschehen), sondern das ist dann eben weil User Reinhard den gewünschten Befehl ohne sudo und ohne PW auch nicht darf... D.h. du musst zusätzlich dafür sorgen, dass User Reinhard auf System B auch alles OHNE PW usw. darf, was du per SYSMON haben willst...
EDIT: zu langsam ;) Aber selbe Richtung... 8)
Ja, es reiht die Schlüssel zu löschen, dann musst du wieder wie früher mit PW einloggen...
ABER: da stehen u.U. mehrere Einträge für verschiedene User/Dinge drin, also vorsicht ;)
EDIT: zu langsam und zu ungenau ;) -> besser die Antwort von Otto nehmen ;)
Gruß, Joachim
Hallo,
nun sieht es bei mir deutlich besser aus. Otto hat in einem anderen Beitrag einen User auf dieses Problem hingewiesen https://forum.fhem.de/index.php/topic,17201.msg805450.html#msg805450 (https://forum.fhem.de/index.php/topic,17201.msg805450.html#msg805450) ich musste das von mir anfänglich gesetzte password aus der FHEM/FhemUtils/uniqueID wieder "von Hand" löschen.
Ab diesen Zeitpunkt kamen einige Werte und nach einem Neustart des Raspi kommen nun anscheinend alle Werte.
Zunächst mal bin ich happy, dass es klappt, das war für mich eine größere Baustelle. Wenn alles stabil läuft, so hänge ich meine Vorgehensweise der Konfiguration hier an, ich hoffe es hilft dann eventuell noch anderen Usern.
Nochmals vielen Dank euch beiden, ohne eure Hilfe würde ich immer noch zwischen den Usern umherirren.
Guten Rutsch nach 2023
Gruß Reinhard