Passwort im Headless-Modus ändern

Passwort im Headless-Modus ändern

Ich erstelle ein Skript zur vollständigen Automatisierung der VPS-Einrichtung und muss das Root-Passwort ändern. Ich möchte es nicht eingeben müssen, da das Skript über SSH ausgeführt wird.

Gibt es eine Möglichkeit, einen beliebigen Wert zur Befehlseingabe umzuleiten passwd?

BEARBEITEN

Ich weiß, dass passwd < passwd_file.txtdas Passwort zweimal enthalten sein muss ... Ich wüsste gern, ob es einen eleganteren Weg gibt, da es ein wenig umständlich erscheint, für diesen Zweck eine temporäre Datei zu verwenden.

Antwort1

Sie sagen nicht, welche UNIX-Version Sie verwenden, aber unter Linux zeigt die Manpage von passwd(1):

   --stdin
          This option is used to indicate that passwd should read the  new
          password from standard input, which can be a pipe.

Sie müssen also lediglich Folgendes ausführen:

echo 'somepassword' | passwd --stdin

Bearbeiten, um hinzuzufügen: Portabler ist chpasswdFolgendes, das (zumindest) sowohl auf Red Hat als auch auf Ubuntu vorhanden ist:

echo 'someuser:somepassword' | chpasswd

Siehe die Manpage.

Antwort2

Ich glaube, Sie werden es schwer haben, das zu tun, was Sie wollen. Der passwdBefehl unternimmt große Anstrengungen, um genau die von Ihnen beschriebene Situation zu vermeiden, um alle Passwort-Rate-Schemata zu behindern und viele potenzielle Sicherheitsprobleme zu umgehen.

Können Sie den Befehl verwenden useradd? Typisches Linux useraddhat eine Option "-p" oder "--password", mit der Sie dasverschlüsseltPasswort auf einen bestimmten Wert. Sie können das verschlüsselte Passwort aus der Datei abrufen /etc/shadow.

Die andere Möglichkeit besteht darin, mit der Datei herumzuspielen /etc/shadow. Es sollte nicht zu schwer sein, seddas gesalzene, verschlüsselte Root-Passwort zu ändern.

Antwort3

Ja! Habe den Weg gefunden. printfHat mich gerettet:

HOST=...
echo "Root password? " && read -r ROOT_PASSWORD
...
ssh root@$HOST <<EOF
    printf "$ROOT_PASSWORD\n$ROOT_PASSWORD\n" | passwd
EOF

Das ist für mich der beste Ausweg: sauber und absolut sicher, da das Passwort niemals im Klartext auf den lokalen oder Remote-Host gelangt (nur über eine SSH-Verbindung).

Antwort4

Sie könnten tmux um passwd wickeln:

tmux new-session -ds chpwd passwd
tmux send-keys -t chpwd NEWPASSWORD$'\n'
tmux send-keys -t chpwd NEWPASSWORD$'\n'

Natürlich als Root ausführen.

verwandte Informationen