![Wie bestätige ich das Linux-Root-Passwort vom SSH-Root aus?](https://rvso.com/image/154443/Wie%20best%C3%A4tige%20ich%20das%20Linux-Root-Passwort%20vom%20SSH-Root%20aus%3F.png)
Wie kann ich das Root-Passwort eines Remote-Rechners überprüfen?
Ich habe Remote-Rechner, auf die normalerweise über SSH-Root und andere Benutzer zugegriffen wird. Aus Sicherheitsgründen habe ich ein Skript, um alle Schlüssel und Benutzerkennwörter regelmäßig von einem zentralen Server aus zu ändern.
Für Nicht-Root-Benutzer wird das Passwort wie folgt aktualisiert.
ssh -i a_priv_key root@ip "echo 'user:NEWPASS' | chpasswd"
Und ich überprüfe, ob sich dadurch tatsächlich etwas geändert hat.
ssh -i b_priv_key user@ip "echo NEWPASS | sudo -S ls /root"
Wenn ich jedoch dasselbe mit dem Root-Benutzer tun möchte, stecke ich fest. Das sudo -S ls /root gibt immer eine Liste mit einem beliebigen Passwort zurück, da wir uns gerade per SSH als Root bei der Remote-Maschine angemeldet haben.
Und wenn wir uns als Benutzer per SSH anmelden, fordert sudo zur Eingabe des Benutzerkennworts auf.
Ich habe versucht, etwas mit „su user“ und „su root“ zu erreichen, weil mir aufgefallen ist, dass ich zur Eingabe eines Root-Passworts aufgefordert werde, aber ich kann es nicht wie oben beschrieben per Skript erstellen.
„login root“ aus der Root-Shell fordert auch immer zur Eingabe eines Kennworts auf, aber ich kann das Kennwort auch hierfür nicht im Klartext schreiben.
Ich habe diese Frage gelesen, hoffte jedoch auf eine integrierte Methode hierfür, anstatt eine benutzerdefinierte Anwendung zu schreiben, die auf den Remotecomputern installiert werden muss. Wie überprüft man unter Linux ein Passwort?
Antwort1
Wenn die Konfiguration sudo
auf dem Zielcomputer eine Option ist, können Sie rootpw
einen bestimmten Befehl einrichten, der sudo
nach dem Root-Passwort statt dem Benutzerpasswort fragt. Sie könnten beispielsweise die folgende Zeile in eine Datei einfügen
/etc/sudoers.d/lsrootpw
(und sudo
den Dienst bei Bedarf neu starten):
Defaults!/bin/ls rootpw
Dadurch sudo ls
wird jeder Benutzer außer root bei der Ausführung nach dem root-Passwort gefragt und nicht nach seinem eigenen Passwort. So können Sie testen mit
ssh -i b_priv_key root@ip su user sudo -S ls /root <<< "NEWPASS"
Das würde in die eine oder andere Richtung gehen, je nachdem, ob das Passwort NEWPASS
richtig ist root
oder nicht. Dieser Test erfordert einen Sudo-Benutzer auf dem Ziel.
Wenn Sie über den Debian- runuser
Befehl verfügen, können Sie stattdessen nobody
Folgendes verwenden:
ssh -i b_priv_key root@ip runuser -u nobody -- sudo -S ls /root <<< "NEWPASS"
Das sollte auch konsistent zwei verschiedene Ergebnisse liefern, je nach Richtigkeit des Passworts. Insbesondere führt ein korrektes Passwort zu einer Beschwerde, dass es nobody
nicht in der sudoers
Datei enthalten ist. Sie könnten dem jedoch durch eine zusätzliche Deklaration in begegnen /etc/sudoers.d/lsrootpw
.
Natürlich unterscheidet sich das alles nicht sehr von einer benutzerdefinierten Anwendung, da es die Installation von etwas auf den Zielhosts erfordert. Gleichzeitig ist das alles mit einer Folge von fünf Remote-Befehlen machbar (add lsrootpw
, restart sudo
, test durchführen, remove lsrootpw
und sudo erneut starten).