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
| Pfad | Besitzer | Modus |
|---|---|---|
/home/deploy | deploy | für andere nicht beschreibbar, zum Beispiel 750 |
/home/deploy/.ssh | deploy | 700 |
/home/deploy/.ssh/authorized_keys | deploy | 600 |
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
- sshd(8), AUTHORIZED_KEYS und Dateirechte, OpenBSD-Handbuch
- sshd_config(5), StrictModes, OpenBSD-Handbuch