Welches ist die maximale Anzahl von Schlüsseln in der Datei authorized_keys?

7

Ich entwickle eine Lösung, die eine große Anzahl von SSH-Schlüsseln in die autorisierten Schlüsseldateien meines SSH-Servers einfügt. Kennt jemand die Anzahl der Schlüssel, die Sie in diese Datei einfügen können? Sprechen wir über hunderttausend oder zehntausende? Irgendeine Idee? Und wie wird die Leistung beeinflusst, wenn Sie eine große Anzahl von Schlüsseln haben?

Ich nehme an, es ist vorzuziehen, Schlüssel zwischen verschiedenen Benutzern aufzuteilen, aber ich möchte die Grenzen eines Benutzers kennen.

enedebe
quelle
Dies ist eine gute Frage zum Testen. Aufgrund der Tatsache, dass es sich bei der Datei um einfachen Text handelt, können wir davon ausgehen, dass keine Indizierung erfolgt und die Komplexität beim Finden eines bestimmten Schlüssels mindestens linear sein sollte - O (n).
Deer Hunter
Es ist das, was ich dachte, aber ich frage, denn wenn jemand Erfahrung in diesem Fall hat, wird es nützlich sein. Ich werde diesen Beitrag mit meinen Tests aktualisieren. Vielen Dank!
Enedebe
Wenn Sie sich wirklich Tausende ansehen, sollten Sie sich die neue CA-Unterstützung ansehen. Möglicherweise können Sie einfach den CA-Schlüssel hinzufügen.
Zoredache
In OpenSSH 6.2 gibt es eine Funktion, die Ihnen möglicherweise helfen kann: article.gmane.org/gmane.os.openbsd.announce/171 - "sshd (8): Es wurde eine sshd_config (5) -Option AuthorizedKeysCommand hinzugefügt, um das Abrufen von autorisierten Schlüsseln von zu unterstützen ein Befehl zusätzlich (oder anstelle von) aus dem Dateisystem. Der Befehl wird unter einem Konto ausgeführt, das durch eine AuthorizedKeysCommandUser-Option sshd_config (5) angegeben wird. "
Deer Hunter

Antworten:

11

Die Anzahl der Einträge in der Datei ist unbegrenzt. Aus dem Quellcode

auth2-pubkey.c 
/* return 1 if user allows given key */
static int
user_key_allowed2(struct passwd *pw, Key *key, char *file)
{ ...

while (read_keyfile_line(f, file, line, sizeof(line), &linenum) != -1) {
    char *cp, *key_options = NULL;

Wie Sie sehen, durchläuft dies einfach die Datei, bis read_keyfile_line -1 zurückgibt.

user9517
quelle
2

Es gibt keine Begrenzung, aber das Finden des richtigen Schlüssels ist langsam, wie das GREPen einer großen Textdatei.

Andrei Mikhaltsov
quelle