ssh und sudo - NOPASSWD funktioniert nicht

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
struppi
Beiträge: 300
Registriert: 02.12.2011 14:12:09

ssh und sudo - NOPASSWD funktioniert nicht

Beitrag von struppi » 22.11.2023 19:28:00

Ich würde gerne einen Rechner über SSH auschalten (einschalten mit wakeonlan läuft). Ich schaff es aber nicht ohne Passworteingabe einen der möglichen Befehle aufzurufen.

Auf dem Server ist ein headless Debian 11, der Client ist Mint.

Auf dem Client führe ich folgenden Befehl aus:

Code: Alles auswählen

 ssh struppi@backup "nohup sh -c '/sbin/shutdown -h' ";
dann bekommen ich als Antwort:

Code: Alles auswählen

 Failed to call ScheduleShutdown in logind, no action will be taken: Access denied
wenn ich mich einlogge, das gleiche.

Code: Alles auswählen

 struppi@backup:~$ /sbin/shutdown -h
 Failed to call ScheduleShutdown in logind, no action will be taken: Access denied
Auf dem Server ist sudo so konfiguriert.

Code: Alles auswählen

# Cmnd alias specification
Cmnd_Alias DOWN = /sbin/shutdown -h, /sbin/reboot, /usr/sbin/pm-suspend, /usr/sbin/pm-hibernate

# User privilege specification
root    ALL=(ALL:ALL) ALL
struppi ALL=(ALL) NOPASSWD:DOWN
Die Überprüfung ergibt folgendes:

Code: Alles auswählen

struppi@backup:~$ sudo -l
Passende Defaults-Einträge für struppi auf backup:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

Der Benutzer struppi darf die folgenden Befehle auf backup ausführen:
    (ALL) NOPASSWD: /sbin/shutdown -h, /usr/sbin/pm-suspend, /usr/sbin/pm-hibernate
    (ALL : ALL) ALL
Warum kann ich nicht passwortlos die Befehle ausführen?

Ich habe mich schon dumm und dämlich gesucht und Hinweise gefunden, das es daran liegt, dass der user über SSH eingeloggt ist. Das Problem ist, ich finde keine Anleitung wie man Abhilfe schafft.

mat6937
Beiträge: 2953
Registriert: 09.12.2014 10:44:00

Re: ssh und sudo - NOPASSWD funktioniert nicht

Beitrag von mat6937 » 22.11.2023 19:46:58

struppi hat geschrieben: ↑ zum Beitrag ↑
22.11.2023 19:28:00

Warum kann ich nicht passwortlos die Befehle ausführen?

Ich habe mich schon dumm und dämlich gesucht und Hinweise gefunden, das es daran liegt, dass der user über SSH eingeloggt ist. Das Problem ist, ich finde keine Anleitung wie man Abhilfe schafft.
Das geht schon, wenn der user nach dem einloggen per SSH, root wird (mit z. B.: "su -").

Benutzeravatar
QT
Beiträge: 1242
Registriert: 22.07.2004 21:08:02
Wohnort: localhost

Re: ssh und sudo - NOPASSWD funktioniert nicht

Beitrag von QT » 22.11.2023 20:08:37

Vielleicht übersehe ich gerade was, aber der User muss schon auch "sudo" dem Befehl voranstellen, damit sich übrhaupt um die sudo Konfiguration gekümmert wird. Wenn Du nur shutdown aufrufst, dann geht das nicht also non-root.

fischig
Beiträge: 3640
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: ssh und sudo - NOPASSWD funktioniert nicht

Beitrag von fischig » 22.11.2023 21:36:22

Ich würde gerne einen Rechner über SSH auschalten
Ich mach' das über ein script. Bedarf einigen Gehirnschmalzes, geht aber. Gibt aber sicher „modernere“ und einfahcere Methoden via pkexec, policykit etc. Davon habe ich keine Ahnung.

Benutzeravatar
thunder11
Beiträge: 1343
Registriert: 19.04.2023 09:08:30

Re: ssh und sudo - NOPASSWD funktioniert nicht

Beitrag von thunder11 » 22.11.2023 23:21:18

Ich würde es mal ganz neumodisch :wink: mit

Code: Alles auswählen

systemctl poweroff
als user (eingeloggt) versuchen

Aber selbst in ssh muss man sich doch erstmal einloggen :?:

EDit:
dafür (oben) sollten Debiansystemd und Debianpolicykit-1 installiert sein

Automatisches einloggen ginge auch - z.B. hier :
https://linuxhint.com/automate-ssh-logi ... -password/
oder
https://geekflare.com/de/ssh-passwordless-login-linux/

uname
Beiträge: 12075
Registriert: 03.06.2008 09:33:02

Re: ssh und sudo - NOPASSWD funktioniert nicht

Beitrag von uname » 23.11.2023 06:51:39

Wenn das Runterfahren zeitlich nicht so kritisch ist (z. B. Verzögerung um 5 Minuten), könnte man einen Sempathor verwenden. Ist das überhaupt ein Sempaphor? Egal. Ein Cron-Prozess von root könnte nach einer Datei suchen (z. B. /tmp/runterfahren) und wenn die Datei existiert (angelegt z. B. mit ssh und und touch und einem normalen Benutzer), dann wird der cron-Prozess irgendwann die Datei finden und das System runterfahren. Sollte sich aber in der Ramdisk befinden, damit das System den Semphar nach dem hochfahren wieder vergessen hat. :mrgreen:

Benutzeravatar
MSfree
Beiträge: 10777
Registriert: 25.09.2007 19:59:30

Re: ssh und sudo - NOPASSWD funktioniert nicht

Beitrag von MSfree » 23.11.2023 08:08:50

struppi hat geschrieben: ↑ zum Beitrag ↑
22.11.2023 19:28:00
Warum kann ich nicht passwortlos die Befehle ausführen?
Generiere dir für root SSH-Schlüssel mit ssh-keygen und lege hier keine Passphrase für die Schlüssel an.
Damit kannst du mit

Code: Alles auswählen

ssh root@backup "/usr/sbin/poweroff";
die Kiste ohne Passwort runterfahren.

uname
Beiträge: 12075
Registriert: 03.06.2008 09:33:02

Re: ssh und sudo - NOPASSWD funktioniert nicht

Beitrag von uname » 23.11.2023 10:22:02

Bei Keys kann man mit "command=' auch Befehle erzwingen. Dann wird bei "ssh root@server" von einem Runterfahr-Benutzer auf Mint der Server runtergefahren ganz ohne SSH-Parameter.

fischig
Beiträge: 3640
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: ssh und sudo - NOPASSWD funktioniert nicht

Beitrag von fischig » 23.11.2023 10:22:49

MSfree hat geschrieben:Generiere dir für root SSH-Schlüssel mit ssh-keygen
Geht das denn für root? Der darf sich doch defaultmäßig nicht per ssh einloggen???
Ich mach das über einen „normalen“ Benutzer und lass den dann auf dem entfernten Rechner via sudo den Befehl ausführen.

uname
Beiträge: 12075
Registriert: 03.06.2008 09:33:02

Re: ssh und sudo - NOPASSWD funktioniert nicht

Beitrag von uname » 23.11.2023 10:24:49

Du kannst root-Login per Key erlauben in /etc/ssh/sshd_config . Standard z.B. bei Backup, wenn der Backup-Server die Daten abholt und nicht umgekehrt.

Benutzeravatar
MSfree
Beiträge: 10777
Registriert: 25.09.2007 19:59:30

Re: ssh und sudo - NOPASSWD funktioniert nicht

Beitrag von MSfree » 23.11.2023 10:31:11

fischig hat geschrieben: ↑ zum Beitrag ↑
23.11.2023 10:22:49
Geht das denn für root?
Ja.
Der darf sich doch defaultmäßig nicht per ssh einloggen?
Doch, aber nur mit Keyfile und nicht mit Benutzer/Passwort.
Ich mach das über einen „normalen“ Benutzer und lass den dann auf dem entfernten Rechner via sudo den Befehl ausführen.
Was ist sudo? Sowas gibt es auf meinen Rechnern aus gutem Grund nicht.

uname
Beiträge: 12075
Registriert: 03.06.2008 09:33:02

Re: ssh und sudo - NOPASSWD funktioniert nicht

Beitrag von uname » 23.11.2023 10:44:15

sudo ist nicht schlecht. Wird nur bei Ubuntu falsch eingesetzt.

Benutzeravatar
MSfree
Beiträge: 10777
Registriert: 25.09.2007 19:59:30

Re: ssh und sudo - NOPASSWD funktioniert nicht

Beitrag von MSfree » 23.11.2023 11:30:21

uname hat geschrieben: ↑ zum Beitrag ↑
23.11.2023 10:44:15
sudo ist nicht schlecht. Wird nur bei Ubuntu falsch eingesetzt.
sudo ist nicht schlecht. Wird nur bei Debian genauso falsch eingesetzt.

uname
Beiträge: 12075
Registriert: 03.06.2008 09:33:02

Re: ssh und sudo - NOPASSWD funktioniert nicht

Beitrag von uname » 23.11.2023 12:03:04

Früher nicht. Früher konnte man - soweit ich mich erinnere - den root-Account nicht direkt bei der Installation sperren. Aber ich denke wir wollen keinen weitere sudo-Diskussion.

Benutzeravatar
MSfree
Beiträge: 10777
Registriert: 25.09.2007 19:59:30

Re: ssh und sudo - NOPASSWD funktioniert nicht

Beitrag von MSfree » 23.11.2023 12:20:49

uname hat geschrieben: ↑ zum Beitrag ↑
23.11.2023 12:03:04
Früher konnte man - soweit ich mich erinnere - den root-Account nicht direkt bei der Installation sperren.
Ja, früher heißt aber Sarge (Debian 3.1, 2005)

struppi
Beiträge: 300
Registriert: 02.12.2011 14:12:09

Re: ssh und sudo - NOPASSWD funktioniert nicht

Beitrag von struppi » 23.11.2023 16:33:25

Oh die meisten Antworten gehen an dem vorbei was ich erklären wollte.

Also der server ist ein Debian.
und ich kann mich einloggen ohne Passwort.
Ich hatte versucht zu erklären, dass ich auch nach dem einloggen per SSH nicht den Befehl aufrufen kann, obwohl in sudo explizit alle Varianten (poweroff, hibernate ) ohne passwort erlaubt sind. Mit sudo funktioniert das, aber er fragt nach einem passwort. Was ich ja genau nicht möchte.

Letztlich ist mir auch egal ob mit sudo oder ohne. Die Frage ist wie kann ich den shutdown Befehl über ssh aufrufen ohne das ich ein Passwort eingeben muss?

Meine jetztige Variante gehhr nicht:

Code: Alles auswählen

ssh ${USER}@${SERVER} "nohup sh -c '/sbin/shutdown -h' ";

Code: Alles auswählen

Failed to call ScheduleShutdown in logind, no action will be taken: Access denied
Mit sudo auch nicht

Code: Alles auswählen

sudo: Zum Lesen des Passworts ist ein Terminal erforderlich; verwenden Sie entweder die Option -S, um aus der Standardeingabe zu lesen oder richten Sie das Askpass-Hilfsprogramm ein
sudo: Ein Passwort ist notwendig
Das ist ja genau was ich nicht möchte.

Benutzeravatar
GregorS
Beiträge: 2626
Registriert: 05.06.2008 09:36:37
Wohnort: Freiburg
Kontaktdaten:

Re: ssh und sudo - NOPASSWD funktioniert nicht

Beitrag von GregorS » 23.11.2023 16:49:06

struppi hat geschrieben: ↑ zum Beitrag ↑
23.11.2023 16:33:25
...
Mit sudo auch nicht

Code: Alles auswählen

sudo: Zum Lesen des Passworts ist ein Terminal erforderlich; verwenden Sie entweder die Option -S, um aus der Standardeingabe zu lesen oder richten Sie das Askpass-Hilfsprogramm ein
sudo: Ein Passwort ist notwendig
Das ist ja genau was ich nicht möchte.
Du möchtest -S nicht benutzen?! Wieso nicht?

Gruß

Gregor
Wenn man keine Probleme hat, kann man sich welche machen. ("Großes Lötauge", Medizinmann der M3-Hopi [und sog. Maker])

HumiNi
Beiträge: 340
Registriert: 02.10.2014 21:46:18

Re: ssh und sudo - NOPASSWD funktioniert nicht

Beitrag von HumiNi » 23.11.2023 17:17:02

struppi hat geschrieben: ↑ zum Beitrag ↑
23.11.2023 16:33:25
Letztlich ist mir auch egal ob mit sudo oder ohne. Die Frage ist wie kann ich den shutdown Befehl über ssh aufrufen ohne das ich ein Passwort eingeben muss?
Aber dies wurde doch bereits (von MSfree) beantwortet: Passwortloses Anmelden mittels ssh-key als root.
Du musst in deinen Überlegungen ssh und sudo komplett trennen.
Gedächtnis wie ein Rechen: Nur Mist bleibt hängen.

Benutzeravatar
Livingston
Beiträge: 1454
Registriert: 04.02.2007 22:52:25
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: 127.0.0.1

Re: ssh und sudo - NOPASSWD funktioniert nicht

Beitrag von Livingston » 23.11.2023 17:20:01

struppi hat geschrieben: ↑ zum Beitrag ↑
23.11.2023 16:33:25
Meine jetztige Variante gehhr nicht:

Code: Alles auswählen

ssh ${USER}@${SERVER} "nohup sh -c '/sbin/shutdown -h' ";

Code: Alles auswählen

Failed to call ScheduleShutdown in logind, no action will be taken: Access denied
Mit sudo auch nicht

Code: Alles auswählen

sudo: Zum Lesen des Passworts ist ein Terminal erforderlich; verwenden Sie entweder die Option -S, um aus der Standardeingabe zu lesen oder richten Sie das Askpass-Hilfsprogramm ein
So wie es hier angezeigt ist, taucht nirgends sudo auf, folglich keine Ausführung.

Mit

Code: Alles auswählen

ssh ${USER}@${SERVER} "sudo nohup sh -c '/sbin/shutdown -h' "
wirst Du auch nicht weiterkommen, da Du sudo auf nohup anwenden würdest, nicht auf shutdown.

Als nächstes würde ich

Code: Alles auswählen

ssh ${USER}@${SERVER} "nohup sh -c 'sudo /sbin/shutdown -h' "
probieren.

Wäre gut, wenn du statt "Geht auch nicht" immer dazuschreiben würdest, wie genau Dein Befehl lautet.
Der Hauptunterschied zwischen etwas, was möglicherweise kaputtgehen könnte und etwas, was unmöglich kaputtgehen kann, besteht darin, dass sich bei allem, was unmöglich kaputtgehen kann, falls es doch kaputtgeht, normalerweise herausstellt, dass es unmöglich zerlegt oder repariert werden kann.
Douglas Adams

mat6937
Beiträge: 2953
Registriert: 09.12.2014 10:44:00

Re: ssh und sudo - NOPASSWD funktioniert nicht

Beitrag von mat6937 » 23.11.2023 18:26:15

struppi hat geschrieben: ↑ zum Beitrag ↑
22.11.2023 19:28:00

Code: Alles auswählen

# User privilege specification
root    ALL=(ALL:ALL) ALL
struppi ALL=(ALL) NOPASSWD:DOWN
Versuch mal mit letzter Zeile in der /etc/sudoers:

Code: Alles auswählen

struppi ALL=(ALL) NOPASSWD:ALL
Wenn das funktioniert, kannst Du noch immer nach einer Einschränkung für "ALL" suchen/experimentieren.

Benutzeravatar
Livingston
Beiträge: 1454
Registriert: 04.02.2007 22:52:25
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: 127.0.0.1

Re: ssh und sudo - NOPASSWD funktioniert nicht

Beitrag von Livingston » 23.11.2023 19:14:56

@mat: Er kann auch sudo da hinsetzen, wo es was bewirkt (siehe mein letzter Post).
Der Hauptunterschied zwischen etwas, was möglicherweise kaputtgehen könnte und etwas, was unmöglich kaputtgehen kann, besteht darin, dass sich bei allem, was unmöglich kaputtgehen kann, falls es doch kaputtgeht, normalerweise herausstellt, dass es unmöglich zerlegt oder repariert werden kann.
Douglas Adams

Benutzeravatar
thunder11
Beiträge: 1343
Registriert: 19.04.2023 09:08:30

Re: ssh und sudo - NOPASSWD funktioniert nicht

Beitrag von thunder11 » 23.11.2023 19:32:54

hast du denn mal

Code: Alles auswählen

systemctl poweroff
probiert ??
S.o.

mat6937
Beiträge: 2953
Registriert: 09.12.2014 10:44:00

Re: ssh und sudo - NOPASSWD funktioniert nicht

Beitrag von mat6937 » 23.11.2023 19:50:05

Livingston hat geschrieben: ↑ zum Beitrag ↑
23.11.2023 19:14:56
..., wo es was bewirkt (siehe mein letzter Post).
Ja, aber die Frage ist, ob er dann ein Passwort oder _nicht_ braucht?
Oder was genau meinst Du mit "was bewirkt"?

Benutzeravatar
Livingston
Beiträge: 1454
Registriert: 04.02.2007 22:52:25
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: 127.0.0.1

Re: ssh und sudo - NOPASSWD funktioniert nicht

Beitrag von Livingston » 23.11.2023 19:52:36

Die angegebenen Befehle in sudoers beziehen sich auf shutdown. Wenn er sudo vor nohup setzt, wird also nix passieren. sudo gehört unmittelbar vor den Befehl, der neue Rechte kriegen soll.
Der Hauptunterschied zwischen etwas, was möglicherweise kaputtgehen könnte und etwas, was unmöglich kaputtgehen kann, besteht darin, dass sich bei allem, was unmöglich kaputtgehen kann, falls es doch kaputtgeht, normalerweise herausstellt, dass es unmöglich zerlegt oder repariert werden kann.
Douglas Adams

struppi
Beiträge: 300
Registriert: 02.12.2011 14:12:09

Re: ssh und sudo - NOPASSWD funktioniert nicht

Beitrag von struppi » 23.11.2023 20:34:20

es ist wirklich kompliziert euch was zu erklären. :hail:

Ich kann mich ohne Probleme per SSH auf den Server ohne Passwort einloggen, das ist NICHT das Problem.

Was aber nicht geht, ist das der Nutzer einen Befehl ausführt ohne Passworteingabe für den er root Rechte braucht. Das geht weder auf dem Server Terminal noch auf dem Client über den ssh Befehl.

Ich habe nirgendwo geschrieben "es geht nicht" sondern immer die Fehlermeldung kopiert und hier gezeigt (du hast die auch in deinem Post kopiert - mehr Meldungen gab es nicht)

und ja ich habe alle Varianten ausprobiert (auch systemctl).

Ich hab's jetzt aber aufgegeben und den Weg gewählt den uname angedeutet hat.

1. Für root einen SSH Schlüssel generieren
2. den root Zugang mit command= einschränken (in der authorized_keys des root accounts)
3. da mir das ganze noch ein zweites Problem lösen hilft, wird ein script aufgerufen (command="/opt/ssh.sh")
4. Damit der normale User über ssh auf die Befehle zugreifen kann, muss dieser auf den Schlüssel vom root benutzen können. Ich hab die kopiert in das .ssh Verzeichnis des Users und den Login mit dem IdentityFile in der config eingetragen.

Das funktioniert alles und ist nur in meinem lokalen Netzwerk. Aber ich habe das Gefühl das ist nicht der beste Weg. Zumal an relativ viel Stellen sowohl lokal, als auch auf dem Server Veränderungen gemacht werden mussten. Aber gut, es funktioniert.

(Es wurden also eine Reihe Dinge genannt, die mir trotzdem geholfen haben.

Der Rechner ist tatsächlich für Backups da und holte bisher die Daten vom Arbeitsrechner. Der Weg in die Richtung war also offen. Er hat aber jetzt eine neue HDD bekommen und ich war mit dem pull Verfahren nicht mehr zufrieden und wollte in Zukunft die zu sicherenden Daten auf dem Server pushen - mit rsync. Daher war der Hinweis mit dem command nützlich und ich konnte das damit umsetzen.)

Antworten