NEWS
Ping über bestimmtes Interface
-
@mcu ich dank dir derweil schon mal für deine Mühe
-
@uncleb sudo davor hast du versucht? -> sudo ssh root....
-
@mcu ja, das bringt auch nix
-
evtl. hilft euch dieser hinweis weiter
https://forum.iobroker.net/topic/25798/gelöst-blockly-py-script-per-ssh-auf-pi/2?_=1617918676157
iobroker/blockly greift als user iobroker zu.
dieser user muss auf dem anderen rechner auch bekannt sein.ob es funktioniert kann auf der kommandozeile getestet werden, wenn man den befehl als user iobroker eingibt
wenn es dabei fehlermeldungen gibt, dann kann stimmt etwas noch nicht an den berechtigungen auf dem anderen rechner.
die tests oben mit ssh wurden ja alle nur mit dem user pi gemacht.sudo -u iobroker bash
-
@oliverio danke für den Hinweis..
Der "entfernte" Rechner ist ein OpenWRT Router, hier hab ich nicht die Möglichkeit den User iobroker anzulegenLEDE/OpenWrt is a single user OS, with the only reason to add users/groups being network user shares that I can think of. There's very little a non-root user can do if using SSH due to it being a single user mode OS.
Schade, wär zu schön gewesen
-
@uncleb Die Frage ist warum Exec im result nichts drin hat, obwohl du es ja in der Console als Ergebnis bekommst.
sudo -u iobroker ssh root@172.17.10.1 -t "ping....
ist das ne Möglichkeit?
Setz mal -t 1, also nur ein Ping als Ergebnis.
-
@mcu sagte in Ping über bestimmtes Interface:
@uncleb Die Frage ist warum Exec im result nichts drin hat, obwohl du es ja in der Console als Ergebnis bekommst.
sudo -u iobroker ssh root@172.17.10.1 -t "ping....
ist das ne Möglichkeit?
Setz mal -t 1, also nur ein Ping als Ergebnis.
da wird in der regel eine passwortabfrage kommen und wenn nein dann gibts schläge auf die finger
die kann blockly nicht eintippen.
für solche fälle muss man die authentifizierung über public-key machenhttps://wiki.ubuntuusers.de/SSH/#Authentifizierung-ueber-Public-Keys
auf der aktuellen maschine (iobroker) wird mit dem user iobroker eine schlüsseldatei erzeugt und an den anderen rechner (openwrt) übermittelt.
danach benötigt man kein passwort mehr, da die schlüssel durch ssh im hintergrund automatisiert ausgetauscht werden.das einzurichten wird im Link erklärt. Alle Schritte führst du vom iobroker rechner aus durch.
hier auch der link von openwrt zum verfahren.
https://openwrt.org/docs/guide-user/security/dropbear.public-key.auth -
@oliverio Danke für deine Antwort.
Auth über Pubkeys hatte ich eingerichtet, nur halt für den User "Pi"Jetzt wollte ich gerade ein Schlüsselpaar für User "iobroker" generieren, dazu auf dem iobroker Rechner den User wechseln
"su iobroker" doch welches Passwort hat User "iobroker" Standardmäßig? -
@uncleb said in Ping über bestimmtes Interface:
@oliverio Danke für deine Antwort.
Auth über Pubkeys hatte ich eingerichtet, nur halt für den User "Pi"Jetzt wollte ich gerade ein Schlüsselpaar für User "iobroker" generieren, dazu auf dem iobroker Rechner den User wechseln
"su iobroker" doch welches Passwort hat User "iobroker" Standardmäßig?hatte ich oben schon mal geschrieben.
damit öffnest du eine neue shell (neue Konsolenebene mit user iobroker, auf dem pi und vielen anderen debian-artigen wird standardmäßig bash verwendet)
am prompt sollte dann iobroker@ stehen.
am ende kannst du die weieder mit exit verlassen und dann hast du das prompt mit deinem standard usersudo -u iobroker bash
-
@oliverio
Alsooo ich hab jetzt mit dem User "iobroker" ein neues Schlüsselpaar erzeugt.
Den Pubkey hab ich in die authorized_keys von OpenWRT hinterlegt..
Aber jetzt muss doch auf OpenWRT auch ein User "iobroker" erstellt werden?
Wie soll ich sonst mit iobroker@172.17.10.1 connecten wenns den User nicht gibt? -
@uncleb said in Ping über bestimmtes Interface:
@oliverio
Alsooo ich hab jetzt mit dem User "iobroker" ein neues Schlüsselpaar erzeugt.
Den Pubkey hab ich in die authorized_keys von OpenWRT hinterlegt..
Aber jetzt muss doch auf OpenWRT auch ein User "iobroker" erstellt werden?
Wie soll ich sonst mit iobroker@172.17.10.1 connecten wenns den User nicht gibt?@Thomas-Braun Wenn du magst, kannst du dies in den Linux Werkzeugkasten mit aufnehmen.
@UncleB
du brauchst keinen extra user einrichten.
du generierst ja die keys unter iobroker und kopierst den key unter einem bestimmten user nach openwrt. in der Regel nimmst du auf openwrt root.
wenn du zusätzlich noch sicher gehen willst, kannst du natürlich auch auf openwrt mit den üblichen linux befehlen einen zusätzlichen user anlegen. ist aber eigentlich nicht notwendig, da die authentifizierung über key sicher ist, sofern niemand sonst auf openwrt zugreifen kann oder an den private key des anderen rechners kommt.da ich es soeben selbst probiert habe ist mir aufgefallen, das es beim kopieren eine kleine Abweichung gibt, da auf openwrt dropbear als ssh server verwendet wird.
daher musst du deinen key an eine andere stelle in openwrt kopieren.
folgende Reihenfolge hat funktioniertAnleitung zur Einrichtung des passwortlosen Zugriffs von einem Rechner auf einen anderen Rechner.
Optional können über den ssh-Befehl auch auf dem Remote-Rechner entsprechende Befehle ausgeführt werden.
1.)
Anmelden als iobroker auf dem iobroker Rechner und starten einer eigenen Shell.
Dieser Befehl kann auch sonst zum Test von Shell-befehlen aus blockly oder javascript verwendet werden.sudo -u iobroker bash
2.)
falls noch nicht passiert.
anlegen eines Schlüsselpärchens (public und private key)ssh-keygen
3.) Kopieren des Schlüssels auf den anderen Rechner auf den zugegriffen werden soll
3a.) wenn auf dem externen Server dropbear installiert ist wie bspw. bei openwrtevtl. nachzubearbeiten ist
root = der Benutzer auf dem entfernten Rechner der für das Login verwendet werden soll
IP-Adresse=eigentlich logisch, die Adresse des entfernten Rechnerscat ~/.ssh/id_rsa.pub | ssh root@192.168.1.1 "cat >> /etc/dropbear/authorized_keys"
3b.) wenn auf dem externen Server der Standard SSH Server installiert ist wie bspw. openssh.
falls nicht bekannt, dann einfach probierenevtl. nachzubearbeiten ist
root = der Benutzer auf dem entfernten Rechner der für das Login verwendet werden soll
IP-Adresse=eigentlich logisch, die Adresse des entfernten Rechnersssh-copy-id root@192.168.1.1
4.) Test des Zugangs
Nach absenden des Befehls erscheint der eingabeprompt des anderen Rechners mit dem gewählten Benutzerevtl. nachzubearbeiten ist
root = der Benutzer auf dem entfernten Rechner der für das Login verwendet werden soll
IP-Adresse=eigentlich logisch, die Adresse des entfernten Rechnersssh root@192.168.1.1
-
@oliverio
Vielen Dank Oliver für die sehr sehr ausführliche Anleitung,ssh-copy-id
Als User "iobroker" war der "Knackpunkt" jetzt läuft das ganze
Perfektjavascript.0 (583) script.js.common.lte_test: PING 8.8.8.8 (8.8.8.8): 56 data bytes 64 bytes from 8.8.8.8: seq=0 ttl=111 time=42.953 ms 64 bytes from 8.8.8.8: seq=1 ttl=111 time=42.639 ms 64 bytes from 8.8.8.8: seq=2 ttl=111 time=42.312 ms --- 8.8.8.8 ping statistics --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max = 42.312/42.634/42.953 ms
Zum auswerten, oben hast du ja n Code gepostet, am liebsten wäre mir blockly, damit kann ich wenigstens bisschen was anfangen.
In der Form
falls 0% packet loss setzte Datenpunkt auf true
Sonst setze Datenpunkt auf falseHast da auch noch n Ansatz?
-
@uncleb sagte in Ping über bestimmtes Interface:
@oliverio
Vielen Dank Oliver für die sehr sehr ausführliche Anleitung,ssh-copy-id
Als User "iobroker" war der "Knackpunkt" jetzt läuft das ganze
Perfektjavascript.0 (583) script.js.common.lte_test: PING 8.8.8.8 (8.8.8.8): 56 data bytes 64 bytes from 8.8.8.8: seq=0 ttl=111 time=42.953 ms 64 bytes from 8.8.8.8: seq=1 ttl=111 time=42.639 ms 64 bytes from 8.8.8.8: seq=2 ttl=111 time=42.312 ms --- 8.8.8.8 ping statistics --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max = 42.312/42.634/42.953 ms
Zum auswerten, oben hast du ja n Code gepostet, am liebsten wäre mir blockly, damit kann ich wenigstens bisschen was anfangen.
In der Form
falls 0% packet loss setzte Datenpunkt auf true
Sonst setze Datenpunkt auf falseHast da auch noch n Ansatz?
Mit blockly kenn ich mich nicht aus
-
-
@uncleb Also das Exec mit result funktioniert jetzt? Was soll das Blockly als Ergebnis liefern?
-
@mcu
Das funktioniert, würde halt gerne filtern, falls im result " 0% packet loss" auftaucht setzte einen Datenpunkt auf true sonst auf false -
-
@mcu
Niiice das klappt schon mal
Wäre nur noch schön wenn man keine Ausgabe erhält.
Ziehe ich den Stick ab:20:27:37.213 info javascript.0 (578) script.js.common.lte_test: PING 8.8.8.8 (8.8.8.8): 56 data bytes 64 bytes from 8.8.8.8: seq=0 ttl=112 time=50.896 ms 64 bytes from 8.8.8.8: seq=1 ttl=112 time=40.574 ms 64 bytes from 8.8.8.8: seq=2 ttl=112 time=50.215 ms --- 8.8.8.8 ping statistics --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max = 40.574/47.228/50.896 ms 20:28:43.676 info javascript.0 (578) Stop script script.js.common.lte_test 20:28:47.605 info javascript.0 (578) Start javascript script.js.common.lte_test 20:28:47.638 info javascript.0 (578) script.js.common.lte_test: registered 0 subscriptions and 0 schedules 20:28:48.822 info javascript.0 (578) script.js.common.lte_test:
Gibts nur n script.js.common.lte_test:
Also falls keine Ausgabe dann ist das Interface auch nicht erreichbar, kann ich den DP auch so auf false setzen? -
@uncleb sagte in Ping über bestimmtes Interface:
Also falls keine Ausgabe
Man erinnere sich an den timeout-parameter
-