Il messaggio che vedi è un problema separato. Ti sta chiedendo di confermare che l'host a cui ti stai connettendo è davvero quello che ti aspetti che sia. Dal server, è possibile ottenere l'impronta digitale eseguendo ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub
. Quindi, quando ti connetti in remoto per la prima volta, puoi assicurarti che le impronte digitali corrispondano.
Le chiavi host, viste in azione qui, risolvono il problema degli attacchi man in the middle : forse il DNS è stato sovvertito e ti stai collegando alla macchina di un concorrente anziché alla tua. Quella macchina raccoglie le tue credenziali e inoltra in modo trasparente la tua connessione al server reale, rubando le tue informazioni a tua insaputa. Assicurarsi che le corrispondenze della chiave host impediscano che ciò accada a meno che l'attaccante non abbia effettivamente rubato la chiave pubblica del server.
Rimane comunque un problema: come fai a sapere quale chiave è corretta? Dopo la prima connessione, la chiave pubblica viene archiviata nel ~/.ssh/known_hosts
file, quindi le connessioni successive vanno bene. Ma la prima volta, o hai bisogno di un modo fuori banda per ottenere l'impronta digitale, oppure segui il modello "TOFU": la fiducia al primo utilizzo.
Ma nulla di tutto ciò ha a che fare con password e chiavi, tranne che sia le chiavi che le password potrebbero essere rubate tramite questo attacco - in un certo senso, è la vulnerabilità che stai chiedendo.
Esistono (almeno) tre motivi per cui le password sono peggiori delle chiavi:
- Possono essere forzati. Una tipica password di 8 caratteri selezionata dall'utente ha circa 30 bit di ipotesi-entropia. Una coppia di chiavi ssh pubbliche / private è di 1024 bit o superiore. È effettivamente impossibile forzare bruscamente una chiave ssh, ma l'individuazione automatica della password avviene continuamente.
- Possono essere stupidi. Gli utenti selezionano regolarmente password orribili, anche con restrizioni in atto, e tendono a utilizzare password più difficili in più punti. Questo ovviamente rende gli attacchi più facili.
- Le password possono essere rubate da remoto. Quando si utilizza SSH, la password è crittografata sul cavo, ma è molto comune che il server ssh venga sostituito su sistemi compromessi con uno che registra tutte le password. Con le chiavi, la chiave privata rimane sul sistema locale e non viene mai inviata, quindi non può essere rubata senza compromettere effettivamente la macchina client.
Inoltre, le chiavi ssh offrono comodità se utilizzate con qualcosa del genere ssh-agent
: si ottiene l'operazione di connessione senza problemi senza ripetere l'autenticazione ogni volta, pur mantenendo un ragionevole livello di sicurezza.
Non c'è alcun vantaggio significativo nel chiedere entrambi, poiché qualcuno che ha abbastanza accesso per rubare la chiave privata può anche facilmente rubare la password dell'utente. Se hai bisogno di più sicurezza di questo, considera la possibilità di esaminare un sistema di autenticazione a due fattori come RSA SecurID o WiKID .