Wie bestätige ich das Linux-Root-Passwort vom SSH-Root aus?

Wie bestätige ich das Linux-Root-Passwort vom SSH-Root aus?

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 sudoauf dem Zielcomputer eine Option ist, können Sie rootpweinen bestimmten Befehl einrichten, der sudonach dem Root-Passwort statt dem Benutzerpasswort fragt. Sie könnten beispielsweise die folgende Zeile in eine Datei einfügen /etc/sudoers.d/lsrootpw(und sudoden Dienst bei Bedarf neu starten):

Defaults!/bin/ls        rootpw

Dadurch sudo lswird 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 NEWPASSrichtig ist rootoder nicht. Dieser Test erfordert einen Sudo-Benutzer auf dem Ziel.

Wenn Sie über den Debian- runuserBefehl verfügen, können Sie stattdessen nobodyFolgendes 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 nobodynicht in der sudoersDatei 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 lsrootpwund sudo erneut starten).

verwandte Informationen