PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Root Pw über ssh ändern ??



jochen1976
21.08.06, 10:50
Hallo erstmal :)

Kennt einer eine Möglichkeit über ein script per ssh das root-pw auf mehreren Rechnern zu ändern?
Ist das nur mit "expect" möglich weil man die Pw-Abfrage abfangen muss oder kann man das auch einfacher lösen? Das einzige Problem ist ja das Passwort zu übergeben. Das script an sich ist ja kein ding.
Wenn einer eine Idee hat wäre ich sehr dankbar.

Gruß Jochen

marce
21.08.06, 10:53
PW lokal gespeichert?

Cerox
21.08.06, 11:19
Fände ich auch interessant; aber ich denke mal, das Programme, die SSH-Sessions nutzen, um automatisch Daten zu übertragen (also ohne Passwort) nicht umsonst die Schlüsselauthentifizierung ohne Passphrase erfordern...

marce
21.08.06, 11:25
die "gruseligste" Methode, ist wohl einfach die Zeile in der /etc/shaddow auszutauschen...

Cerox
21.08.06, 11:31
Und wie loggt er sich dann passwortlos auf mehreren Rechnern ein^^

jochen1976
21.08.06, 11:38
So..
Ich habe das jetzt soweit hinbekommen mit expect.
Ich führe erst ein Script aus was sich auf jeden Server einloggt(password eingabe mittels expect) und dort dann ein Script auführt. Dem script gibt man wiederum lokal schon das neue root password mit.
Das klapptsoweit alles ganz gut. (das lokale script mit serverliste und schleife muss ich noch screiben). Aber das script welches auf dem Server ausgeführt wird hängt irgendwie und ich weiß nicht wieso.
Wenn einer da ne Idee hat wieso das nicht weitergeht immer her damit.

Hier das script, welches auf dem Server ausgeführt wird:
########################################
#!/usr/bin/expect -f
#
set timeout -1
match_max 100000
# password
set password [lindex $argv 1]
# username
set user [lindex $argv 0]
# opem shell
spawn $env(SHELL)
# send passwd command
send -- "passwd $user\r"
expect "*?assword:*"
send -- "$password\r"
expect "*?assword:*"
send -- "$password\r"
send -- "\r"
expect eof
########################################

Ausgabe die dann kommt ( habe als pw test2 genommen)

root@3[~]# passwd root
Enter new UNIX password: test2

Problem ist das er nach der ersten pw eingabe stehenbleibt, bzw. keine 2te aufforderung zur eingabe des Passworts kommt die expect dann abfangen würde.

Einer ne Idee oder sieht den Fehler?

Gruß Jochen

@ cerox:
Passwortlos muss es ja nicht sein da das Root-pw auf allen Maschienen gleich sein soll und man somit dem lokalen script sagen kann, verwende pw "xyz" zum login via ssh. Expect fängt dann die Aufforderung zur Eingabe des Passworts ab und gibt das pw zurück.

jochen1976
21.08.06, 13:45
Hab das Problem gelöst.
Hinter jedem expect noch ein "sleep 1" und es geht.

BedriddenTech
22.08.06, 11:45
Vielleicht ist ja DSH genau was für deine Aufgabe. :)

dingeling
22.08.06, 15:58
die "gruseligste" Methode, ist wohl einfach die Zeile in der /etc/shaddow auszutauschen...
Warum ist das die gruseligste Methode?
Hab ich auch schon gemacht - warum sollte ich das nichtmehr tun?

BedriddenTech
22.08.06, 17:35
Woher weißt du z.B., welchen Algorithmus das System zur Paßwort-Verschlüsselung benutzt?

bla!zilla
22.08.06, 20:12
In einer gut dokumentierten Serverumgebung ist sowas dokumentiert.

BedriddenTech
22.08.06, 21:47
Das stimmt natürlich. Aber bei uns haben die Maschinen nicht alle denselben Stand. Die älteren sind mit dem Standard-Crypt()-Algorithmus unterwegs, andere haben MD5. Und auch allgemein sind doch Skripte besser, bei denen ich nicht Gefahr laufe, sie irgendwann anpassen zu müssen?