Benutzer mit SSH-Zugang und sudo anlegen

Unter Ubuntu oder Debian führen Sie sudo adduser deploy und sudo usermod -aG sudo deploy aus. Unter RHEL oder Fedora gilt sudo useradd -m -G wheel deploy und sudo passwd deploy. Legen Sie dann den öffentlichen Schlüssel in /home/deploy/.ssh/authorized_keys ab, im Besitz dieses Benutzers, den Ordner mit Modus 700 und die Datei mit 600. Testen Sie, bevor Sie Ihre Sitzung schließen.

Kein Einfügen öffentlicher Schlüssel im Terminal mehr: Wardterm legt Ihren Schlüssel für Sie auf das neue Konto. Zeigen

Aktualisiert am . Auf Ubuntu 24.04 und Debian 13 in Wegwerf-Containern ausgeführt, einschließlich Schlüssel-Login und sudo.

Benutzer anlegen

Unter Ubuntu und Debian fragt adduser nach einem Passwort und einigen optionalen Angaben, die Sie mit Enter überspringen können:

sudo adduser deploy
sudo usermod -aG sudo deploy

Das -a ist wichtig: Ohne es ersetzt -G die übrigen Gruppen des Benutzers. Ein minimales Debian hat möglicherweise gar kein sudo, führen Sie daher zuerst als root apt install sudo aus.

Unter RHEL, Rocky, AlmaLinux und Fedora heißt die Admin-Gruppe wheel:

sudo useradd -m -G wheel deploy
sudo passwd deploy

Prüfen Sie das Ergebnis:

id deploy
sudo -l -U deploy

SSH-Schlüssel installieren

Führen Sie das auf dem Server aus und ersetzen Sie das Beispiel durch den öffentlichen Schlüssel des Benutzers. Besitzer und Modi werden in einem Schritt gesetzt:

sudo install -d -m 700 -o deploy -g deploy /home/deploy/.ssh
echo 'ssh-ed25519 AAAA... you@laptop' | sudo install -m 600 -o deploy -g deploy /dev/stdin /home/deploy/.ssh/authorized_keys

Das schreibt eine neue Datei und ersetzt eine vorhandene, nutzen Sie es also nur für ein neues Konto. Hat das Konto ein Passwort und ist die Passwort-Anmeldung aktiv, können Sie stattdessen von Ihrem eigenen Rechner aus arbeiten, was den Schlüssel anhängt:

ssh-copy-id -i ~/.ssh/id_ed25519.pub deploy@server

Auf Systemen mit aktivem SELinux (enforcing) korrigieren Sie auch die Labels:

sudo restorecon -R /home/deploy/.ssh

Die wichtigen Rechte

PfadBesitzerModus
/home/deploydeployfür andere nicht beschreibbar, zum Beispiel 750
/home/deploy/.sshdeploy700
/home/deploy/.ssh/authorized_keysdeploy600

Der klassische Fehler: Man legt diese Dateien als root an und vergisst den Besitzer. In unserem Test führte eine Datei im Besitz von root mit Modus 600 zu folgender Meldung, weil der Benutzer sie nicht lesen kann:

deploy@server: Permission denied (publickey,password).

Prüfen Sie es hiermit, und lesen Sie Permission denied (publickey), falls Besitzer und Modi stimmen und es trotzdem scheitert:

sudo stat -c '%a %U %n' /home/deploy /home/deploy/.ssh /home/deploy/.ssh/authorized_keys

Debian und Ubuntu sind bei gruppenbeschreibbaren Ordnern großzügiger, wenn die Gruppe die private Gruppe des Benutzers ist: Unsere Anmeldung funktionierte auch mit .ssh auf 775. Verlassen Sie sich nicht darauf, andere Systeme lehnen das ab. Halten Sie sich an die Tabelle.

Testen, bevor Sie die Sitzung schließen

Öffnen Sie ein neues Terminal und lassen Sie die alte Sitzung angemeldet:

ssh deploy@server
sudo whoami

Der zweite Befehl sollte nach dem Passwort von deploy fragen und dann root ausgeben. Erst dann ist es sicher, den Root-Login zu deaktivieren oder die Passwort-Anmeldung abzuschalten.

Benutzer mit Schlüssel und ohne Passwort

Für ein Konto, das aus einem Skript entsteht:

sudo adduser --disabled-password --comment "" deploy

Bei älteren Versionen wie Ubuntu 22.04 lautet die Option --gecos "". Die Schlüssel-Anmeldung funktionierte in unserem Test unter Ubuntu 24.04 weiterhin, aber sudo kann kein Passwort abfragen, das es nicht gibt:

sudo: a password is required

Setzen Sie entweder ein Passwort oder erlauben Sie diesem Benutzer sudo ohne Passwort. Legen Sie diese Datei immer mit visudo an, das eine fehlerhafte Datei ablehnt:

sudo visudo -f /etc/sudoers.d/90-deploy

mit dieser Zeile darin:

deploy ALL=(ALL) NOPASSWD:ALL

Beachten Sie den Preis: Wer diesen Schlüssel oder eine Shell als dieser Benutzer erlangt, hat sofort root. Automatisierung braucht das manchmal, ein Mensch, der sich von Hand anmeldet, selten. Siehe sudo sicher über SSH nutzen.

Fragen

Wie gebe ich einem bestehenden Benutzer sudo-Rechte?

Mit sudo usermod -aG sudo benutzername unter Debian und Ubuntu oder sudo usermod -aG wheel benutzername unter RHEL und Fedora. Der Benutzer erhält die Rechte bei der nächsten Anmeldung.

Warum fragt sudo nach einem Passwort, obwohl ich mich mit Schlüssel anmelde?

Das sind zwei getrennte Dinge. Der Schlüssel beweist SSH, wer Sie sind. sudo fragt nach dem Passwort des Kontos selbst, sofern die sudoers-Datei nichts anderes festlegt.

Muss ich mich nach dem Hinzufügen zur Gruppe abmelden?

Ja. Die Gruppenmitgliedschaft wird bei der Anmeldung gelesen, eine vor usermod geöffnete Sitzung hat sie also nicht.

Quellen

Mehr zu SSH auf jedem System

Alle Anleitungen