PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SSH: maximale Anzahl Einträge in known_hosts



bloodknight
06.07.10, 09:24
Hallo,

weiß jemand, wie viele Einträge die known_hosts maximal verkraften kann? Hab leider nichts ergooglen können. Vielen dank für Eure Hilfe!

cheers bloodknight

muell200
06.07.10, 13:46
Hallo,

weiß jemand, wie viele Einträge die known_hosts maximal verkraften kann? Hab leider nichts ergooglen können. Vielen dank für Eure Hilfe!

cheers bloodknight

denke nicht das es grenze gibt...
( logisch ab 10001 tb gibt es probleme oder kann es das dateisystem nicht mehr... )

warum fragst du?

bloodknight
06.07.10, 13:52
warum fragst du?

Na weil ich vorhabe, da viele Hosts reinzuschreiben. Das mit der Dateisystemlimitierung ist schon klar, aber was der SSH-client verarbeiten kann ist scheinbar nirgendwo dokumentiert :confused:
Habe mal in die OpenSSH-User-Mailingliste geschrieben, vllt. bin ich dann schlauer :D

marce
06.07.10, 13:58
was verstehst Du unter "viele"?

Also - mit ~200 Einträgen ist's völlig problemlos.

Relevant wird's wohl so ab ein paar tausend werden, daß dann evtl. eine Verzögerung beim Verbindungsaufbau messbar wird...

bloodknight
06.07.10, 14:13
Unter "viele" versteh ich tatsächlich ein paar tausend. Da die Verzögerung nur beim Verbindungsaufbau eintreten sollte (nur dann wird die Datei ja eingelesen), wäre das für mich i.O.
Interessanter ist halt, ob es da ne Grenze nach oben gibt, z.B. 32536 Zeilen oder so.

derRichard
06.07.10, 14:18
hi!

selbst bei 32536 zeilen wird das file nicht mehr als 16mb haben.
eine zeile hat ~256byte.
ein 16mb file sequenziell durchlaufen sollte für einen heutigen pc überhaupt kein problem sein...

hth,
//richard

marce
06.07.10, 14:34
wenn ich mit meinen geringen c-Kenntnissen die hostfile.c richtig verstehe dürfte es kein Problem geben, solange das Filesystem mit macht.

... aber, irgendwann wird's langsam...

/* Go through the file. */
while (fgets(line, sizeof(line), f)) {
cp = line;
linenum++;


evtl. einfach auf die known_hosts verzichten, so man sie nicht als zusätzlichen Sicherheitsaspekt braucht.

bloodknight
06.07.10, 14:38
Vielen Dank Euch allen! Ich denke nun, dass es funktionieren müsste. Als Notlösung werde ich mir mal eine Konfiguration ohne known_hosts erstellen.

oziris
06.07.10, 22:36
linenum++;

Wasn dasn fürn Datentypus ... und wie isn der überhaupt definierisiert ( /usr/include/limits.h ?) ...

derRichard
06.07.10, 22:46
Wasn dasn fürn Datentypus ... und wie isn der überhaupt definierisiert ( /usr/include/limits.h ?) ...
das ist ein "int". definition siehe c99 standard. :P

//richard

bloodknight
07.07.10, 07:19
Hallo nochmal,

was für ein Integer-Typ ist das denn nun? long_int oder short_int? Wäre für mich nicht ganz unerheblich ob ich 32767, 65535 oder bestenfalls (maximal) 2147483647 Einträge in der known_hosts halten kann.

cheers bloodknight

marce
07.07.10, 07:35
da AFAIK int bei c Systemabhängig ist - je nach dem.

bei einem 32Bit-System hast Du halt 32Bit, bei einem 64Bit-System eben 64Bit Breite. Sollte so oder so reichen.

Wenn Du es genauer wissen willst, wie er definiert ist - schau im Quellcode nach.

(wobei ich mir immer noch nicht so recht vorstellen kann, warum man so viele known_hosts brauchen könnte...)

Roger Wilco
07.07.10, 07:47
was für ein Integer-Typ ist das denn nun?
Normales signed int und damit meistens (da in der Sprache nicht definiert) 4 Byte breit.

http://www.openbsd.org/cgi-bin/cvsweb/src/usr.bin/ssh/hostfile.c?rev=1.48;content-type=text/plain

int 80h
07.07.10, 13:26
Afaik ist das auch vom Compiler (und nicht nur vom System) abhängig.

Freundliche Grüße,
int 80h

PS.:


/*
size.c
compile: $ gcc size.c -o size
*/
#include <stdio.h>

int main()
{
printf("short int: %d\n",sizeof(short int));
printf("unsigned short int: %d\n",sizeof(unsigned short int));
printf("int: %d\n",sizeof(int));
printf("unsigned int: %d\n",sizeof(unsigned int));
printf("long int: %d\n",sizeof(long int));
printf("unsigned long int: %d\n",sizeof(unsigned long int));

return 0;
}