NEWS
[gelöst] Blockly - per ssh an anderen Rechner und script ausführen
-
Deswegen:
@kutscher sagte in [gelöst] Blockly - per ssh an anderen Rechner und script ausführen:Ich benutze einen Public-Key, ein Passwort wird nicht abgefragt.
sonst musst du eben auch ein Passwort eingeben (funktioniert aber im Blockly nicht). "raspi3" funktioniert nur bei einem korrekt eingerichtetem Netzwerk mit DNS, sonst muss man halt die IP nutzen.
-
@SBorg
Ach verstehe, das ist eigentlich der Hostname.
Ich hatte versucht das mit einem Script zu machen, aber mein JS adapter installiert keine zusätzlichen NPM Module wie Simple-ssh. Brauche ich das hier in dem fall auch trotzdem oder geht das ohne? -
@Buhu91 sagte in [gelöst] Blockly - per ssh an anderen Rechner und script ausführen:
Ach verstehe, das ist eigentlich der Hostname.
Genau
ssh ist eigentlich bei den meisten Distris von Hause aus installiert. Wenn in der shell der Aufruf von ssh zu einer Ausgabe der Hilfe führt brauchst du sonst nix anderes mehr. -
@kutscher Ich muss hier nochmal drauf zurückkommen.
Ich versuche 433 MHz Steckdosen zu steuern. Ausgangslage:
1x Raspi A mit ioBroker
1x Raspi B mit dem 433 MHz AdapterWenn ich aus dem Terminal den folgenden Befehl aufrufe, funktioniert es; der Raspi A verbindet sich Raspi B und führt den Befehl aus:
ssh pi@RaspiB '/home/pi/raspberry-remote/send 11111 1 1'
Eine Anmeldung erhalte ich nicht, da ich mich per Zertifikat anmelde.
Füge ich den Block als Exec in Blockly ein, wird nichts ausgeführt:
Ich habe jetzt alle Varianten durch... auch mit deinem Befehl "su pi -c "befehl". Keine Chance. Tippe ich diesen Befehl übrigens im Terminal ein, erhalte ich eine Passwortabfrage. Warum eigentlich? Ist doch per Zertifikat authentifiziert.
Wäre um einen Tipp dankbar.
-
@FrY Setz mal den Haken bei "mit Ergebnissen" und logge die Ausgabe des Befehls, die dem Callback übergeben wird.
Ist doch per Zertifikat authentifiziert.
Hast du das Zertifikat auch so abgelegt, dass es für den user
iobroker
(der den ssh-Befehl nämlich auf Raspi A ausführt) lesbar ist? Das Thema hatten wir vor einer Weile schon mal, da hat es nach dieser Änderung auch funktioniert: -
Alternativ kann man auch ohne exec SSH-Befehle absetzen:
https://forum.iobroker.net/topic/12470/gelöst-befehl-an-raspi/7
Hier müsstest du statt Passwort das Zertifikat eingeben. Ein Beispiel dafür ist hier zu finden: https://www.npmjs.com/package/ssh2#execute-uptime-on-a-server// ... .connect({ host: '192.168.100.100', port: 22, username: 'frylock', privateKey: require('fs').readFileSync('/here/is/my/key') // ^-- lädt das Zertifikat });
-
@FrY Ich habe genau das Gleiche vor wie du.
Pi 1 mit iobroker als Host soll sich auf Pi2 mit dem 433 MHz Adapter einloggen und ein .sh skript starten. In der shell klappt das problemlos. Mit javascript oder blockly klappts nicht .... ich raffs einfach nicht was da schief läuft.Könntest du mir bitte genau erklären was ich machen muss damit das läuft?
Anmeldung erfolgt auch bei mir per Zertifikat. -
@LukyLuke sagte in [gelöst] Blockly - per ssh an anderen Rechner und script ausführen:
In der shell klappt das problemlos.
"Melde" dich mal als der User
iobroker
an und probiere es dann auf der Konsole:
su -u iobroker -s /bin/bash
Ich wette, dass der User kein Zertifikat hat, mit dem du dich auf dem zweiten Host einloggen kannst. Hinterlege eins, dann gehts auch aus ioBroker heraus.
-
@AlCalzone
ich danke dir!!!
Habe mich heute nochmal dem Problem gewidmet. Der user "iobroker" hatte keine Rechte für ssh in der /etc/passwd. Somit konnte ich mich mittels Konsole überhaupt nicht als iobroker anmelden. Hab /sbin/nologin geändert in /bin/bash. Dann gings. Ohne deinen Tipp wäre ich da nicht so schnell drauf gekommen.Vielen Dank!
-
@LukyLuke sagte in [gelöst] Blockly - per ssh an anderen Rechner und script ausführen:
Somit konnte ich mich mittels Konsole überhaupt nicht als iobroker anmelden. Hab /sbin/nologin geändert in /bin/bash.
Das ist auch nicht vorgesehen, da man bis auf wenige Ausnahmen nicht als dieser User arbeiten sollte.
Stattdessen sollte man sich als root oder sonstiger User anmelden und mittels(sudo) su -u iobroker -s /bin/bash
zuiobroker
wechseln. -
Hallo, ich versuche seit mehreren Tagen etwas ähnliches umzusetzen, leider ohne Erfolg.
Auf einem raspberry4 läuft Iobroker 3.7.8 ich benutze einen weiteren raspberry3 mit rasbian buster um in chromium die Visualisierung anzuzeigen. Nun möchte ich den Monitor das raspberry3 nach xMinuten abschalten und über einen Bewegungsmelder wieder einschalten.
Authentifizierung mittels Public-/Private-Key Verfahrens ist zwischen raspberry4 und raspberry3 eingerichtet.
Wenn ich am raspberry4 mit meinem Benutzer angemeldet bin und über Terminal folgendes sende: ssh raspberry3@192.100.100.100 -t vcgencmd display_power 1
Geht der Monitor aus. Soweit funktioniert es also.Wenn ich das ganze aus Iobroker (blockly) versuche, passiert nichts. Auch keine Fehlermeldung im Log.
Wenn ich mich auf dem raspberry4 mit dem Iobroker Benutzer anmelden und ssh raspberry3@192.100.100.100 -t vcgencmd display_power 1 ausführe muss ich ein Passwort eingeben. Könnte es hier eventuell auch sein das der Iobroker Benutzer nicht auf den Key zugreifen kann? Und wenn ja wie kann ich das ändern. Danke schon mal...
-
@ianmoone sagte in [gelöst] Blockly - per ssh an anderen Rechner und script ausführen:
Könnte es hier eventuell auch sein das der Iobroker Benutzer nicht auf den Key zugreifen kann?
Ja, wurde doch oben schon diskutiert. Der Key muss im Kontext des Users ioBroker eingerichtet werden. Per Konsole kannst du das z.B. machen, wenn du dich als ioBroker "einloggst" (wie in meinem vorherigen Post beschrieben) und dann die Zertifikats-Geschichte einrichtest.
-
Ok. Danke.
Aktuell scheitere ich damit den erstellen Key auf den anderen raspberry zu übertragen.
Wenn dies versuche: copy-id -i .ssh/id_rsa.pub username@ipadresse
Soll ich das Passwort für den unser Iobroker eingeben. Habe ich aber nicht.... -
@ianmoone Mir fehlen leider ein paar Informationen, um dir zu helfen.
Führst du den Befehl als root oder iobroker aus?
Ist username gleich "raspberry3", wie im obigen Screenshot?
Hast du mal versucht, den Kopiervorgang als root auszuführen, aber dann als Pfad/home/iobroker/.ssh/id_rsa.pub
zu nehmen? -
@AlCalzone said in [gelöst] Blockly - per ssh an anderen Rechner und script ausführen:
Hast du mal versucht, den Kopiervorgang als root auszuführen, aber dann als Pfad /home/iobroker/.ssh/id_rsa.pub zu nehmen?
Danke. Das hat funktioniert!
-
Moin! Ich würde da gern noch mal anknüpfen, da es genau mein aktuelles Problem beschreibt, aber ich nicht so richtig schlau werde welchen Schritt ich jetzt gehen soll.
Ich hab soweit eingerichtet, dass der user Pi auf einen Linux-Rechner SSH'en darf, der ebenfalls (der Einfachheit halber) einen User pi eingerichtet bekommen hat.
Jetzt würde ich per exec gernesu pi -c "ssh pi@192.168.200.27 ffmpeg -y -rtsp_transport tcp -i rtsp://admin:***@192.168.200.22:554/11 -vframes 1 /home/glsjbrg/images/do.jpg"
ausführen. .27 ist der besagte andere Linux-Rechner. Wenn ich das per Konsole, als pi angemeldet, von meinem iobroker aus mache gehts wunderbar, nur per exec nicht. Was ich verstanden habe ist, dass die JS-exec Sachen jetzt im Prinzip vom User "iobroker" aus gemacht werden und der vermutlich die Befehle jetzt auf dem Linux-Rechner (der .27) nicht ausführen darf.
Was muss ich denn jetzt machen, um das hinzubekommen? Wie gesagt, per Konsole und den Usern "pi" gehts, nur eben per iobroker exec-Befehl nicht, was ich allerdings brauche, wie es scheint.
Danke
-
Moin,
habe ähnliches Problem. Habe einen rpi4 mit laufender Homebridge und habe iobroker einfach mit dem Befehl dazu installiert als user "pi"
curl -sL https://iobroker.net/install.sh | bash -
Hat ja auch funktioniert und das ganze läuft. Nun möchte ich meinen Mac per ssh ausschalten. Das funktioniert in der Homebridge wunderbar, man musste nur das Zertifikat des users homebridge übertragen. Der Ausschaltbefehl lautet:
ssh user@192.168.1.50 pmset sleepnow
Natürlich funktioniert es so nicht, da das Zertifikat fehlt. In die Konsole gebe ich folgendes ein:
ssh-keygen
dann läuft das ganze durch. Den Kopiervorgang starte ich mit
ssh-copy-id user@192.168.1.50
und hier kommt eine Fehlermeldung: /usr/bin/ssh-copy-id: ERROR: No identities found
Da komme ich nicht weiter. Logischerweise beim ausführen des Ausschaltbefehls in der Konsole kommt "Host key verification failed."
Jemand eine Lösung?
-
@Joshude versuch es mal so:
-
das scheitert schon daran dass ich keine Tilde machen kann. Normal ist ja beim mac alt+N ~ aber in dem Fenster geht das nicht. Auch copy und paste ist nicht möglich. Habe 3 browser probiert, geht bei keinem. Dieses Terminal ist wirklich sehr seltsam. Im Homebridge Terminal ist das alles problemlos möglich.
-
@waterchill wieso kopierst Du nicht einfach den tag-code und fügst es in der Konsole ein?