NEWS
[gelöst] SSH Problem: sudo: no tty present and no askpas....
-
Hi @wendy2702, ja seit zwei Abenden.
Habe mir bei dem ganzen 'Gebastel' schon 2-3 mal meine Konfiguration wieder aus dem BackUp geholt um wieder einen definierten Stand zu haben ...
Das Problem ist, dass es da 100derte Infos zu gibt, die bisher alle nicht zum Erfolg geführt haben. Das oben ist mein aktueller Stand. -
-
@pedder007 Das fällt mir auf:
debug1: Sending env LC_ALL = de_DE.UTF-8 debug1: Sending command: /etc/motioneye/motionmailon.sh bash: warning: setlocale: LC_ALL: cannot change locale (de_DE.UTF-8) /bin/bash: warning: setlocale: LC_ALL: cannot change locale (de_DE.UTF-8)
Wie sieht das Script aus? Bin verwundert das da kein „.“ vor dem Pfad steht, habe aber auch schon ewig nicht mehr remote ein Script ausgeführt.
Sind auf beiden Systemen dieselben env definiert?
Mal geschaut wie das bei dem funktionierenden aussieht?
-
@pedder007 sagte in SSH Problem: sudo: no tty present and no askpass program....:
Ich habe dann zusätzlich auf dem Server in die 'sudoers' noch ein:
'pi ALL = NOPASSWD: /etc/motioneye/motionmailon.sh' spendiert, was aber auch nichts bringt.hast du das mit
sudo visudo
aufgerufen?
das prüft ob die datei inhaltlich korrekt ist, da man sich da sein ganzes system zerschießen kann.was passiert wenn du dich manuell per ssh dort einwählst?
als ssh direkt von der komandozeile aus. am besten gleich als user iobrokersudo -u iobroker bash
und dann zunächst mit ssh eine session auf dem anderen rechner aufmachen, aber ohne angabe des skripts
und dann wenn die shell offen ist dann versuchen das skript aufzurufen.
ggfs kommen da nochmal bessere fehlermeldungen -
@thomas-braun said in SSH Problem: sudo: no tty present and no askpass program....:
Mal mitsudo -n
probiert?
Meine Güte @Thomas-Braun das war's
.... und ich könnte fast dafür wetten, dass ich das auch schonmal als Option mit dazwischen hatte, aber evtl. war das noch ohne:
'pi ALL = NOPASSWD: /etc/motioneye/motionmailon.sh'
Was ich allerdings eben (bei paralleler weiterer Recherche) noch in
'pi ALL = (ALL) NOPASSWD: ALL' umgewandelt hatte,@wendy2702, ja hatte auch alles mögliche schon Quergeschaut, bis in die Pass-Keys hinein
@OliverIO 'visudo' yep, das findet man ja dann alles wenn man recherchiert ...
Bzgl. des Restes, dass hatte dann funktioniert, wie gesagt, ssh Login (ohne Script) ohne PW ging ja schon sauberYou all made my Day - 1000 Dank!!!
-
Tja, da komme ich leider doch nochmal zurück.
Das ganze funktioniert aktuell nur von der Konsole aus, aber nicht als 'Exec' Blockly.Ich habe den Textbaustein gerade sogar vom Blockly in die Console kopiert um Tippfehler auszuschließen, aber daran liegts nicht.
Zusätzlich habe das sudo -n auch gerade noch zusätzlich in mein bestehendes Setup eingefügt (im Screenshoot deaktiviert) und das macht dort keinen Unterschied, heißt klappt mit und ohne.
-
@pedder007 sagte in SSH Problem: sudo: no tty present and no askpas....:
pi ALL = (ALL) NOPASSWD: ALL
ich bin mit dem syntax nicht ganz vertraut, aber welchen user hast du den verwendet zum ausprobieren?
pi?der iobroker arbeitet mit user iobroker, also musst du den ssh-key auch für iobroker kopieren und auf dem entfernten rechner auch iobroker berechtigen.
deswegen habe ich oben geschrieben
sudo -u iobroker bash
damit machst du eine shell auf als user iobroker und kannst auf der konsole alles in ruhe austüfteln, so als ob der iobroker das selber wäre
-
@pedder007 sagte in SSH Problem: sudo: no tty present and no askpas....:
Das ganze funktioniert aktuell nur von der Konsole aus
Auch als User 'iobroker'?
Setz mal vor den ssh-Befehl noch ein
sudo -H -u iobroker
-
@thomas-braun sagte in SSH Problem: sudo: no tty present and no askpas....:
Setz mal vor den ssh-Befehl noch ein
ne, der aufruf erfolgt ja schon als user iobroker.
bin mir sicher, das er alles gemacht hat um seinen normal user pi zu berechtigen -
@oliverio sagte in SSH Problem: sudo: no tty present and no askpas....:
ne, der aufruf erfolgt ja schon als user iobroker.
Richtig, aber es funktioniert ja nicht. Deswegen Meldungen provozieren.
ssh pi@irgendwas
von einem anderen User aus aufgerufen durfte die Keys nicht mitschleifen, sonst könntest du ja auf ganz billige Tour die Rechte kapern.
-
Ja, der user pi ist auf dem Zielsystem definitiv berechtigt, sonst würde das ja nicht von der Console des ioBrokers Raspis aus gehen.
Das hatte ich im bestehenden Setup auch genauso gemacht -> siehe deaktivierter SSH Befehl.Und der neue Motioneye (im Container) ist ja auch bereits ein 'verdrahteter' Slave.
Muss denn der user iobroker, wegen Ausführung aus einem Blockly, definitiv auch berechtigter User auf dem Zielsystem sein?
Ich dachte das es reicht, wenn das der im SSH genutzte User ist.Noch gerade nachgeschaut:
Auf dem Bestandssystem hat der user iobroker keine abgelegten SSH Keys, es gibt gar kein /home/iobroker/.sshEntsprechend, wie gesagt, da mache ich das nur über den user pi.
-
Der iobroker ist ja auch ein Systemuser und über die sudoers in den Möglichkeiten eingeschränkt.
-
also du prüfst als erstes, ob du im folgenden verzeichnis einen public key findest
/homer/iobroker/.ssh/id_rsa.pub
wenn nein, dann musst du für den iobroker ein schlüsselpaar erzeugen.
sudo -u iobroker ssh-keygen -t rsa -b 4096
wenn der public key vorhanden ist, dann mit folgendem befehl auf den anderen rechner kopieren
sudo -u iobroker ssh-copy-id -i ~/.ssh/id_rsa.pub pi@192.168.xxx.xxx
dann kann der ssh auf der empfängerseite den iobroker authentifizierenm wenn er sich als pi auf dem anderen rechner anmeldet.
da du wahrscheinlich aktuell den pub.key im lokalen pi verzeichnis hast, kann der user iobroker da auch nicht drauf zugreifen bzw. weiß gar nicht warum, da der lokale pi und der entfernte pi was komplett verschiedenes ist.
details dazu
https://wiki.ubuntuusers.de/SSH/#Publickey-Authentifizierung -
Das hatte ich ja gerade geprüft und in dem Bestands-Setup gibt es auf dem Zielsystem beim User iobroker keinen Key und das funktioniert ja trotzdem. Ich hatte das ja oben schonmal gefragt, ob der User iobroker auch einen Key benötigt, um das sauber aus Blockly ausführen zu können.
Egal, ich werde das ausprobieren und dann mit dem User iobroker versuchen aus dem Blockly zu SSH'en.
Aber nicht mehr heute, gestern war's schon viel zu spätDer Mechanismus wie der Key angelegt und übertragen wird, ist mir ja bekannt, sonst würde das ja von der Console aus nicht funktionieren
Wie auch schon gesagt, habe ja schon eine Menge recherchiert ...
Danke nochmal und ich melde mich morgen wieder, wie der Test verlaufen ist.
Edit:
Den hier fand' ich speziell zu dem Thema auch gut:
https://www.ssh.com/academy/ssh/copy-id#troubleshooting -
@pedder007 sagte in SSH Problem: sudo: no tty present and no askpas....:
Das hatte ich ja gerade geprüft und in dem Bestands-Setup gibt es auf dem Zielsystem beim User
Auf dem iobroker rechner sollst du prüfen nur dort sollte es ein home verzeichnis für iobroker geben
ein evtl vorhandener user iobroker auf dem zielsysystem interessiert nicht, da du dich ja mit pi@... anmelden willst
-
@oliverio
Da gibt's natürlich einen Key für pi, klaro.
Den habe habe ich ja dann mit ssh-copy-id aufs Zielsystem befördert.Edit:
Für iobroker finde ich ein home/iobroker/.ssh
Das gehört iobroker und da komme ich sogar mit sudo als pi gar nicht rein !? -
auf dem zielsystem im verzeichnis /home/pi/.ssh
in der datei authorized_keys steht dann der kopierte pub key drin.
ist das der vom user pi oder vom user iobroker auf deinem iobroker system?ich tippe auf den vom user pi
-
@pedder007 sagte in SSH Problem: sudo: no tty present and no askpas....:
Das gehört iobroker und da komme ich sogar mit sudo als pi gar nicht rein !?
korrekt, da steht auch der private key drin und den sollte wirklich niemand sehen. also root natürlich schon.
aber bevor es kompliziert wird. führe die befehle oben so aus wie ich geschrieben habe. dann bin ich mir sicher das es funktionieren wird ohne das du dein skript anpassen musst.
es hängt nur daran, das der user iobroker (mit dem blockly und dein skript ausgeführt wird) auf dem anderen rechner nicht bekannt ist, weil du alles mit dem user pi (also user pi auf dem iobroker rechner) probiert hast. aber nur weil der user auf beiden rechner pi heißt, ist er nicht der selbe. -
@oliverio werde ich testen.
Habe gerade nur mal schnell im Motioneye Bestandssystem in home/pi/.ssh/authorized_keys geschaut und da sind tatsächlich auch zwei (?) iobroker Schlüssel drin. Das habe ich irgendwann vor zwei Jahren eingerichtet und somit völlig aus den Augen verloren.
Entsprechend solltest Du hoffentlich wirklich richtig liegen.Da es auf dem aktuellen Master ja also bereits einen iobroker key gibt, muss ich diesen dann aber dann nur noch auf den neuen Slave propagieren, richtig?
Also keinen neuen mehr anlege, sondern nur noch: sudo -u iobroker ssh-copy-id -i ~/.ssh/id_rsa.pub pi@192.168.xxx.xxxEdit:
Vergiss die Frage, habs nochmal gelseen und hattest Du ja auch geschrieben.. wer lesen kann
-
@oliverio
klappt nicht weil;usr/bin/ssh-copy-id: ERROR: failed to open ID file '/home/pi/.ssh/id_rsa.pub': Permission denied
Hatte nun auf dem Zielsystem sogar noch iobroker zu den 'sudo'ern' hinzugefügt und extra auch noch einen entsprechenden Eintrag i nder sudoers vorgenommen, hilft nicht.
Edit:
Müsste es nicht eigentlich auch heißen:sudo -u iobroker ssh-copy-id -i ~/.ssh/id_rsa.pub iobroker@192.168.xxx.xxx
Also mit dem iobroker user hinten im Befehl ==> nee, das Resultat bleibt das Gleiche