Wie kann ich einem Benutzer ermöglichen, sich mit SSH-Schlüsseln, aber ohne Kennwort anzumelden?

17

Ich möchte einen Benutzer anlegen und habe kein Passwort. Wie in können Sie sich nicht mit einem Passwort einloggen. Ich möchte seinen authorized_keys Schlüssel hinzufügen, indem ich root benutze. Dies ist für mein automatisiertes Backup-System.

Jeff Schaller
quelle

Antworten:

26

Zumindest unter Fedora ist die Verwendung von auf shadow-utils basierenden Linux-Distributionen völlig passwd -dfalsch . Wenn Sie das Kennwort mit entfernen , bedeutet dies, dass sich jeder Benutzer (auf der Konsole oder grafisch) ohne Kennwort anmelden kann.passwd -d

Um Anmeldungen mit Kennwortauthentifizierung zu blockieren, führen Sie Folgendes aus: Damit wird das Konto gesperrt, sodass es nur dem Root-Benutzer zur Verfügung steht. Die Sperre wird durchgeführt, indem das verschlüsselte Kennwort in eine ungültige Zeichenfolge umgewandelt wird (indem der verschlüsselten Zeichenfolge ein! Vorangestellt wird).passwd -l username

Jeder lokale oder entfernte Anmeldeversuch führt zu einem "falschen Passwort" , während die Anmeldung mit öffentlichem Schlüssel weiterhin funktioniert. Das Konto kann dann mit entsperrt werden .passwd -u username

Wenn Sie ein Konto vollständig sperren möchten, ohne es zu löschen, bearbeiten /etc/passwdund setzen Sie /sbin/nologinoder /bin/falsein das letzte Feld. Dies führt zu "Dieses Konto ist derzeit nicht verfügbar." für jeden Login-Versuch

Bitte lesen Sie die passwd (1) -Manpage.

Guido
quelle
@guido: rvs wird nicht über deine Antwort informiert. Dafür müsstest du seiner Antwort einen Kommentar hinzufügen (ich habe es getan). Beachten Sie, dass Leser Ihre Antwort möglicherweise vor seiner lesen, Sie sollten Antworten schreiben, die direkt auf die Frage antworten. Gut gemacht für diesen Hinweis! Dies gilt für die meisten Linux-Distributionen (die Linux-Shadow-Dienstprogramme verwenden).
Gilles 'SO- hör auf böse zu sein'
@ Gilles: Entschuldigung, ich bin neu in StackExchange; Ich habe nur ein bisschen darauf hingewiesen, kaum weil es war, als würde man Benutzern vorschlagen, passwortlose Konten einzurichten, und es wurde akzeptiert und als nützlich markiert ...
guido
@guido: Keine Sorge, ich habe nur erklärt, wie Sie Ihre Warnung effektiver gestalten können. In solchen extremen Fällen, in denen eine Antwort gefährlich falsch ist, wäre es angemessen, eine Änderung vorzuschlagen, die eine Warnung oder Korrektur hinzufügt (hoffentlich werden Sie diese Situationen nicht zu oft auf der Site antreffen).
Gilles 'SO- hör auf böse zu sein'
@guido: Tatsächlich funktioniert auf Debian Squeeze (ich weiß nichts über Lenny oder Etch) diese Antwort. Es erlaubt niemandem außer root sich anzumelden, erlaubt Schlüssel zu autorisieren, aber es ist kein Passwort weniger, es akzeptiert nur kein Passwort. Ich war überrascht, dass Sie das Passwort "löschen" konnten und dass es auf diese Weise funktionieren würde. Aber es hat genau das getan, was ich wollte und genau das, was diese Antwort tut, und es war die einzige Antwort, also habe ich sie einfach akzeptiert. Diese Antwort ist sinnvoller und ich akzeptiere sie, weil ich bereit bin, auf andere Distos zu wetten, die es jedem erlauben, sich mit seinem Passwort einzuloggen, im Gegensatz zu Debian. Trotzdem gute Antwort.
1
@ acidzombie24, @mattdn: Sie hätten nullok aus pam.d / password-auth entfernen können, wenn Debian pam verwendet (ich denke schon, aber ich bin kein Debian-Experte). Die Manpage cleary von passwd (1) gibt jedoch an, dass das Argument -d das Erstellen von kennwortlosen Konten ist, sodass jede distro-spezifische Spekulation hier zweitrangig ist, da die Frage sehr allgemein war.
Guido
2

Bitten Sie nicht spezifisch für den SSH-Dämon darum, nicht die kennwortbasierte Authentifizierung, sondern die Schlüssel- / Passphrasenauthentifizierung zu akzeptieren?

Suchen Sie nach Änderungen an sshd_config.

einstellen

PasswordAuthentication No
PreferredAuthentications publickey,hostbased,keyboard-interactive
Protocol 2,1

Weitere Konfigurationsparameter finden Sie unter man ssh_config

Nikhil Mulley
quelle
0

Legen Sie einfach kein Passwort für den Benutzer fest. Wenn es bereits ein Passwort gibt, entfernen Sie es mit passwd -l <username>.

Es ist jedoch weiterhin möglich, sich als dieser Benutzer anzumelden - mit authorized_keys oder über su oder sudo von einem privilegierten Konto aus.

Wohnmobile
quelle
1
Wie von guido hervorgehoben , passwd -dmacht das Konto passwortfrei, da Sie sich bei anmelden können, ohne ein Passwort eingeben zu müssen. Verwenden Sie passwd -ldiese Option, um das Konto zu sperren (stellen Sie sich vor, Sie geben ein Kennwort ein, das nicht eingegeben werden kann).
Gilles 'SO- hör auf böse zu sein'
Ich habe Ihrem Post eine Warnung hinzugefügt, weil es in der jetzigen Form gefährlich ist. Ich überlasse es Ihnen, zu entscheiden, ob Sie Ihre Antwort korrigieren oder löschen (wenn Sie der Meinung sind, dass Guidos ausreichen) oder die Warnung ablehnen.
Gilles 'SO- hör auf böse zu sein'
Warum, warum akzeptieren die Leute die Antwort, die nicht einmal funktioniert?
Mathepic
@mathepic: Es funktioniert unter Debian. Genau so, wie ich gefragt habe
Sind Sie sicher, dass ein nicht privilegierter Benutzer nicht suauf den Benutzer zugreifen kann ?
Mattdm