it-swarm.com.de

Was ist eigentlich in known_hosts?

Ich hatte kein .ssh Verzeichnis, bis ich lief

ssh [email protected]

Dies erstellte ein .ssh-Verzeichnis mit einer Datei known_hosts.

Es enthielt einen Text wie diesen.

foo.com,107.180.00.00 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAuJfqSnraBz//Ux4j/hZpLv2eYUxNUgCk+9ClqoSgfcu4vXbWtUGSjo75UVQf+uguOeBnRLppJJ3mt0R5c/PPcawUGWfffk33t+biYcqra9xUcyfiGtO/Icko2L1J0EYTXM/8x8VK6UYFMfad2gltnZRa8Am50oHTXot1Df0RljUBxvh/UhmTJUrODpyrl2xY1OMWjM+S6uYCMNeSQGEpNfsWiCIStRnctMZSxiYJOLTSC4F2GF7B8pYFBn5rSwVHp17WCdO+4BZfwvH3HSSH8IWoyFhki+NlG912SEBJXcryvc0JPfAB9DTB4mRImjgrRT8vz5QeaCDrh8k4/A+U1fff

Ich dachte, dies könnte ein öffentlicher oder privater Schlüssel sein, der auf irgendeine Weise von meinem Server gezogen wurde, aber das war es nicht.

Was ist das und wofür wird es verwendet?

Ich versuche nur, mehr über ssh und dessen Funktionsweise zu erfahren. In diesem Fall habe ich beispielsweise den privaten Schlüssel nicht auf dem lokalen Computer eingerichtet, sodass erwartungsgemäß ein Kennwort abgefragt wurde.

Forschung

Es wird angenommen, dass es sich um einen öffentlichen Schlüssel für den Server handelt

https://security.stackexchange.com/questions/20706/was-ist-der- Unterschied- zwischen-authorisiertem- Schlüssel-und-bekannter-Hostdatei-für-ssh

30
cade galt

Um die obige Antwort und Ihren Kommentar zu ergänzen, gibt es vier Bausteine ​​für die SSH-Sitzung

  1. Verschlüsselung (symmetrische Schlüssel, die nach dem Schlüsselaustausch pro Sitzung abgeleitet werden)
  2. Datenintegrität (MAC mit zB SHA, HMAC)
  3. Schlüsselaustauschmethoden
  4. Public-Key-Methoden oder Host-Key-Methoden

die SSH-Algorithmus-Aushandlung beinhaltet eine Schlüsselaustausch-Zustandsmaschine, die beginnt, wenn die SSH_MSG_KEXINIT-Nachricht zusammen mit der Algorithmus-Liste gesendet wird.

Die Schlüsselaustauschmethode oder einfach kex gibt die Sitzungsschlüssel für die Verschlüsselung und die Hostauthentifizierung an. Öffentliche Hostschlüssel (ssh-rsa, ssh-dss ..), die an den Client gesendet werden. Der folgende Schritt sind die grundlegenden Schritte, die für kex unter Verwendung des Diffie-Hellman-Schlüsselaustauschalgorithmus ausgeführt werden

unter Angabe des RFC https://tools.ietf.org/html/rfc425

Die folgenden Schritte werden zum Austauschen eines Schlüssels verwendet. In diesem Fall ist C der Client. S ist der Server; p ist eine große sichere Primzahl; g ist ein Generator für eine Untergruppe von GF (p); q ist die Reihenfolge der Untergruppe; V_S ist die Identifikationszeichenfolge von S; V_C ist die Identifikationszeichenfolge von C; K_S ist der öffentliche Host-Schlüssel von S; I_C ist die SSH_MSG_KEXINIT-Nachricht von C und I_S ist die SSH_MSG_KEXINIT-Nachricht von S, die ausgetauscht wurde, bevor dieser Teil beginnt.

  1. C erzeugt eine Zufallszahl x (1 <x <q) und berechnet e = g ^ x mod p. C schickt e an S.

  2. S erzeugt eine Zufallszahl y (0 <y <q) und berechnet f = g ^ y mod p. S erhält e. Es berechnet K = e ^ y mod p, H = hash (V_C || V_S || I_C || I_S || K_S || e || f || K) (diese Elemente werden entsprechend ihrer Art codiert; siehe unten) , und Signatur s auf H mit ihrem privaten Host-Schlüssel. S sendet (K_S || f || s) an C. Die Signaturoperation kann eine zweite Hash-Operation beinhalten.

  3. C überprüft, ob K_S wirklich der Host-Schlüssel für S ist (z. B. unter Verwendung von Zertifikaten oder einer lokalen Datenbank). C darf den Schlüssel auch ohne Bestätigung annehmen; Dies macht das Protokoll jedoch unsicher gegen aktive Angriffe (kann jedoch in vielen Umgebungen aus praktischen Gründen kurzfristig wünschenswert sein). C berechnet dann K = f ^ x mod p, H = Hash (V_C || V_S || I_C || I_S || K_S || e || f || K) und überprüft die Signatur s auf H.

die in Schritt drei erwähnte lokale Datenbank in bestimmten Systemen könnte die Datei .ssh/known_hosts sein. Um Ihre Frage zu beantworten, wird der öffentliche Schlüssel während des Schlüsselaustauschs vom Host an den Client gesendet.

Die folgenden Formate für öffentliche Schlüssel und/oder Zertifikate sind derzeit definiert:

ssh-dss REQUIRED-Zeichen Raw DSS Key

ssh-rsa EMPFOHLEN unterzeichnen Raw RSA Key

pgp-sign-rsa OPTIONAL OpenPGP-Zertifikate signieren (RSA-Schlüssel)

pgp-sign-dss OPTIONAL OpenPGP-Zertifikate signieren (DSS-Schlüssel)

4
cmidi

Diese Datei ist effektiv Ihre persönliche Zertifizierungsstelle. Dies ist die Liste aller öffentlichen SSH-Server-Hostschlüssel, deren Richtigkeit Sie ermittelt haben. Jeder Eintrag in known_hosts besteht aus einer großen Zeile mit drei oder mehr durch Leerzeichen getrennten Feldern:

ein. Ein oder mehrere Servernamen oder IP-Adressen, die durch Kommas verbunden sind.

foo.com,107.180.00.00

b. Die Art des Schlüssels.

ssh-rsa

c. Die öffentlichen Schlüsseldaten selbst sind so codiert, dass sie im Bereich ASCII liegen.

AAAAB3NzaC1yc2EAAAABIwAAAQEAuJfqSnraBz//Ux4j/hZpLv2eYUxNUgCk+9ClqoSgfcu4vXbWtUGSjo75UVQf+uguOeBnRLppJJ3mt0R5c/PPcawUGWfffk33t+biYcqra9xUcyfiGtO/Icko2L1J0EYTXM/8x8VK6UYFMfad2gltnZRa8Am50oHTXot1Df0RljUBxvh/UhmTJUrODpyrl2xY1OMWjM+S6uYCMNeSQGEpNfsWiCIStRnctMZSxiYJOLTSC4F2GF7B8pYFBn5rSwVHp17WCdO+4BZfwvH3HSSH8IWoyFhki+NlG912SEBJXcryvc0JPfAB9DTB4mRImjgrRT8vz5QeaCDrh8k4/A+U1fff

d. Beliebige optionale Kommentardaten.

Ebenfalls!! Dieser Thread könnte für Sie von Nutzen sein:

https://security.stackexchange.com/a/2071

16
Castiel