2015-10-20 18 views
11

Io non avevano una directory .ssh fino a quando mi sono imbattutoCosa si trova in known_hosts?

ssh [email protected]

Questo ha creato una directory .ssh con un file known_hosts.

Aveva del testo come questo.

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

ho pensato che questo avrebbe potuto essere una chiave pubblica o privata tirato del mio server in qualche modo, ma non lo era.

Che cos'è ea cosa serve?

Sto solo cercando di saperne di più su ssh e su come funziona. Ad esempio, in questo caso non ho impostato la chiave privata sul computer locale, quindi ha richiesto una password come previsto.

Research

Si supponga di essere una chiave pubblica per il server in base alle

https://security.stackexchange.com/questions/20706/what-is-the-difference-between-authorized-key-and-known-host-file-for-ssh

+0

* ma non lo era. * Perché supponi? Hai letto la pagina di manuale per 'sshd (8)', che contiene la descrizione e il formato di questo file? – Jakuje

risposta

3

da aggiungere alla risposta di cui sopra e il tuo commento, Ci sono quattro elementi di base per la sessione ssh

  1. Encryption (chiavi simmetriche derivato dopo exhange chiave per sessione)
  2. L'integrità dei dati (MAC utilizzando ad esempio SHA, HMAC)
  3. metodi di scambio chiave
  4. metodi a chiave pubblica o host metodi chiave

la negoziazione algoritmo di SSH comporta una macchina a stati di scambio di chiavi che ha inizio quando il messaggio viene inviato SSH_MSG_KEXINIT insieme con la lista di algoritmi.

Il metodo di scambio delle chiavi o semplicemente kex specifica le chiavi di sessione per la crittografia e le chiavi pubbliche dell'host di autenticazione dell'host (ssh-rsa, ssh-dss ..) che vengono inviate al client. Il passo di seguito sono i passi fondamentali che avvengono per KEX usando l'algoritmo di scambio di chiavi Diffie-Hellman

citando il RFC https://tools.ietf.org/html/rfc4253

Le seguenti operazioni sono utilizzate per scambiare una chiave. In questo, C è il client ; S è il server; p è un ottimo primo sicuro; g è un generatore per un sottogruppo di GF (p); q è l'ordine del sottogruppo; V_S is S's stringa di identificazione; V_C è la stringa di identificazione di C; K_S è la chiave pubblica dell'host ; I_C è il messaggio SSH_MSG_KEXINIT di C e I_S è il messaggio SSH_MSG_KEXINIT che è stato scambiato prima dell'inizio di questa parte .

  1. C genera un numero casuale x (1 x < < q) e calcola e = g^x mod p. C invia messaggi al S.

  2. S genera un numero casuale y (0 < y < q) e calcola f = g^y mod p. S riceve e. Calcola K = e^y mod p, H = hash (V_C || V_S || I_C || I_S || K_S || e || f || K) (questi elementi sono codificati in base al loro tipo; vedere sotto), e firma s su H con la sua chiave host privata. S invia (K_S || f || s) a C. L'operazione di firma può comportare un'operazione di hashing secondo .

  3. C verifica che K_S sia realmente la chiave host per S (ad esempio, utilizzando i certificati o un database locale). C è inoltre autorizzato ad accettare la chiave senza verifica; tuttavia, facendo ciò si renderà il protocollo insicuro agli attacchi attivi (ma potrebbe essere opportuno per motivi pratici a breve termine in molti ambienti). C quindi calcola K = f^x mod p, H = hash (V_C || V_S || I_C || I_S || K_S || e || f || K), e verifica la firma s su H.

il database locale di cui al punto tre in alcuni sistemi potrebbe essere il file .ssh/known_hosts. Quindi per rispondere alla tua domanda la chiave pubblica viene inviata al client dall'host durante lo scambio di chiavi. Formati

la seguente chiave pubblica e/o certificati sono attualmente definiti:

ssh-dss segno RICHIESTE Raw DSS Key

ssh-rsa RACCOMANDATO segno Raw RSA Key

PGP-sign -rsa (chiave RSA) OPTIONAL certificati segno OpenPGP

PGP-sign-dss certificati segno OpenPGP OPTIONAL (tasto DSS)

+0

Per farla breve, non devo generare questa chiave in qualsiasi momento, ma attraverso un protocollo specificato dal link che hai postato? –

+0

Sì Se sei il client ssh non hai bisogno di generare la chiave host – cmidi

6

Questo file è, di fatto, l'autorità di certificazione personale. È la lista di tutte le chiavi host del server SSH che hai determinato essere accurate. Ogni voce in known_hosts è una riga grande con tre o più campi separati da spazi vuoti come segue:

a. Uno o più nomi di server o indirizzi IP, uniti tra loro da virgole.

foo.com,107.180.00.00

b. Il tipo di chiave.

ssh-rsa

c. I dati della chiave pubblica stessa codificati per rimanere all'interno della gamma ASCII.

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

d. Qualsiasi dato di commento facoltativo.

Inoltre !! Questo thread potrebbe essere utile per voi:

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

+2

Ma da dove viene questa chiave pubblica? –