Es ist am besten, öffentliche Schlüssel für SSH zu verwenden. Also meine sshd_config
hat PasswordAuthentication no
.
Einige Benutzer melden sich nie an, z. B. ein SFTP-Benutzer mit Shell /usr/sbin/nologin
. Oder ein Systemkonto.
So kann ich einen solchen Benutzer ohne Passwort mit anlegen adduser gary --shell /usr/sbin/nologin --disabled-password
.
Ist das eine gute / schlechte Idee? Gibt es Konsequenzen, die ich nicht berücksichtigt habe?
sudo
Zugriff benötigen (entweder weil sie keine Sudo-Berechtigungen haben oder weil sie über eine Sudo-Berechtigung verfügenNOPASSWD
), sollte die von Ihnen ausgewählte Antwort geeignet sein. Ich habe eine Bearbeitung dieser Antwort eingereicht, um das Sudo-Anliegen zu berücksichtigen, aber in der Zwischenzeit werde ich Sie hier anrufen.Antworten:
Wenn Sie Root-Zugriff auf den Server haben und SSH-Schlüssel für Ihre Benutzer neu generieren können, falls diese diese verlieren
UND
Sie sind sicher, dass ein Benutzer (als Person) nicht über mehrere Benutzerkonten verfügt und zwischen diesen in einer SSH-Sitzung wechseln muss ( bei Bedarf können auch mehrere SSH-Sitzungen geöffnet werden ).
UND
Sie benötigen niemals "physischen" Zugriff (über Tastatur + Monitor oder über die Remote-Konsole für eine VM) auf den Server
UND
Keine Benutzer haben einen kennwortgeschützten
sudo
Zugriff (dh sie haben entweder überhaupt keinen Sudo-Zugriff oder haben Sudo-Zugriff mitNOPASSWD
).Ich denke, du wirst gut sein.
Wir haben viele Server bei der Arbeit, die so konfiguriert sind (nur einige Konten benötigen Zugriff auf die VM über die VMware-Remotekonsole, die anderen stellen nur eine Verbindung über SSH mit Pubkey-Authentifizierung her).
quelle
PasswordAuthentication no
ein anderes Problem hat, kann sich der Benutzer sowieso nicht anmelden.Diese ursprünglich erwähnte Frage
passwd --delete <username>
ist unsicher : Damit ist das verschlüsselte Passwortfeld in/etc/shadow
vollständig leer.Wenn Sie so konfiguriert haben
sshd
, dass die Kennwortauthentifizierung verweigert wird, ist dies mit SSH sicher. Wenn jedoch ein anderer Dienst in Ihrem System die Kennwortauthentifizierung verwendet und nicht für die Zurückweisung von Nullkennwörtern konfiguriert ist, ist der Zugriff ohne Kennwort möglich! Das willst du nicht.adduser --disabled-passwd
erzeugt einen/etc/shadow
Eintrag, bei dem das verschlüsselte Passwortfeld nur ein Sternchen ist, d. hDies ist "ein verschlüsseltes Passwort, das niemals erfolgreich eingegeben werden kann", dh das Konto ist gültig und erlaubt technisch Anmeldungen, aber es macht die Authentifizierung durch ein Passwort unmöglich, um erfolgreich zu sein . Wenn Sie also andere auf der Kennwortauthentifizierung basierende Dienste auf Ihrem Server haben, wird dieser Benutzer für diese gesperrt.
Nur Authentifizierungsmethoden, die ein anderes als das Standardkennwort des Kontos verwenden (z. B. die SSH-Schlüssel), funktionieren für diesen Benutzer für alle Dienste, die die Systemkennwortdateien in diesem System verwenden. Wenn Sie einen Benutzer benötigen, der sich nur mit SSH-Schlüsseln anmelden kann, ist dies das, was Sie möchten.
Wenn Sie ein vorhandenes Konto auf diesen Status einstellen müssen, können Sie diesen Befehl verwenden:
Es gibt einen dritten speziellen Wert für das verschlüsselte Passwortfeld:
adduser --disabled-login
Dann enthält das Feld nur ein einziges Ausrufezeichen.Wie beim Sternchen führt dies dazu, dass die Kennwortauthentifizierung nicht erfolgreich ist, hat jedoch eine zusätzliche Bedeutung: Bei einigen Verwaltungstools wird das Kennwort als "gesperrt" markiert.
passwd -l
Ähnlich verhält es sich, wenn dem vorhandenen Kennwort-Hash ein Ausrufezeichen vorangestellt wird, wodurch die Kennwortauthentifizierung ebenfalls nicht verwendet werden kann.Aber hier ist eine Falle für die Unachtsamen: Im Jahr 2008 wurde die Version des
passwd
Befehls, die aus dem altenshadow
Paket stammt, geändert und neu definiert, und zwarpasswd -l
von "Konto sperren" zu "Passwort sperren". Der angegebene Grund ist "für die Kompatibilität mit anderen passwd-Versionen".Wenn Sie (wie ich) dies vor langer Zeit gelernt haben, kann es eine böse Überraschung sein. Es hilft auch nichts, wenn
adduser(8)
man sich dieser Unterscheidung anscheinend noch nicht bewusst ist.Der Teil, das deaktiviert Konto für alle Methoden der Authentifizierung setzt tatsächlich ein Ablaufdatum Wert von 1 für das Konto:
usermod --expiredate 1 <username>
. Vor dem Jahr 2008passwd -l
stammt dies aus demshadow
Quellkit, mit dem dies zusätzlich zum Präfixieren des Kennworts mit einem Ausrufezeichen durchgeführt wurde. Dies ist jedoch nicht mehr der Fall.Das Debian-Paket changelog sagt:
Die Fehlerhistorien für Debian-Fehler 492307 und Fehler 389183 können hilfreich sein, um das Denken dahinter zu verstehen.
quelle
adduser --disabled-passwd
Wenn also ein anderer Dienst die Kennwortauthentifizierung zulässt, kann sich der Benutzer ohne Kennwort anmelden?adduser --disabled-password
speziell die Kennwortauthentifizierung ist für dieses Konto nicht möglich.*
damit es das erste ist, was die Leute lesen.passwd
Quellcode veröffentlicht. Lieben Sie es nicht, wenn sich herausstellt, dass etwas, das Sie einmal gelernt und sich dann darauf verlassen haben, nicht mehr so ist?