Come posso ottenere Putty per richiedere il BLOB remoto SHA256 come impronta digitale chiave?


2

Quando ssh dal mio Mac a un nuovo server Ubuntu remoto, mi chiede di confermare l'impronta digitale chiave come un BLOB base64 SHA256.

Ma quando provo a connettermi con Putty su Windows o Ubuntu a un nuovo server Ubuntu remoto, mi chiede di confermare l'impronta digitale chiave come MD5. Preferirei di gran lunga confermare usando un BLOB base64 SHA256.

La documentazione di Putty per il pannello di configurazione di Key Exchange indica che è a conoscenza dei BLOB di base64, ma il riferimento è per un'impostazione che presuppone che conosca in anticipo l'impronta digitale (configurazione manuale).

Posso / come posso dire a Putty di visualizzare la nuova impronta digitale della chiave BLOB remota Base64 invece della nuova impronta digitale della chiave MD5 remota quando mi collego a un server remoto e l'impronta digitale remota non corrisponde al valore precedente memorizzato localmente?

Risposte:


2

Fare attenzione a distinguere tra BLOB e hash. Il BLOB di chiavi pubbliche utilizzato da OpenSSH, e anche PuTTY, è lo stesso per una determinata chiave indipendentemente dagli hash utilizzati. Il BLOB di chiavi è archiviato in base64 da OpenSSH nei suoi xxx_key.pub known_hosts authorized_keysfile, a seconda dei casi, in parte perché semplifica la copia di questi file e valori con tecniche come taglia e incolla e e-mail (soprattutto più vecchie) che potrebbero non gestire "binary" aka " Dati a 8 bit. L '"impronta digitale" visualizzata da OpenSSH (per impostazione predefinita, a meno che non venga richiesto VisualHostKey) era MD5 (BLOB) visualizzata in esadecimale, e ora è SHA256 (BLOB) visualizzata in base64. PuTTY ha seguito il lead originale di OpenSSH ma (a partire da 0.67) non l'aggiornamento.

Puoi richiedere un miglioramento seguendo le istruzioni nel manuale e duplicato su http://www.chiark.greenend.org.uk/~sgtatham/putty/feedback.html#feedback-features . O è open source; puoi effettuare tu stesso la modifica e inoltrarla a loro (vedi B.5 subito dopo B.4). Il codice 'fingerprint' è attualmente in un posto in sshdsa.ce due in sshrsa.c, ma vedo sul sito Web la prossima versione includerà chiavi ecdsa ed ed25519, che presumibilmente significa almeno uno e forse diversi nuovi posti per creare un'impronta digitale. Per essere coerenti, consenti a base64 di un hash (non solo di un BLOB come ora) in validate_manual_keyinmisc.c. È facile se si cambia in SHA256-b64 incondizionatamente e non si fa mai MD5-hex; per un invio o funzionalità utilizzabile da altre persone, questo deve probabilmente essere configurabile e / o interattivo, uno dei quali sembra un po 'più difficile.

Per Windows, posso vedere una soluzione molto ingombrante. Utilizzare plinkper connettersi all'host e accettare la nuova chiave, inserendola nel registro. (Se esisteva una vecchia chiave, salvarla prima.) Ottenere la nuova chiave dal registro (in pezzi), creare il BLOB, l'hash e la base64 e visualizzarli per conferma. Se non confermato, eliminare la chiave dal registro (e ripristinarne una precedente).

Per Unix, un modo un po 'meno ingombrante è usare sshcon StrictHostKeyChecking=noper accettare la nuova chiave e inserire il BLOB Base64 known_hostso usare ssh-keyscanper ottenere direttamente il BLOB Base64. Quindi base64-decode, hash, base64-encode (l'hash) e display; se non valido dopo sshaccettazione forzata, eliminare la voce non valida da known_hosts; se buono dopo ssh-keyscan, aggiungi la buona voce. OpenSSL può comodamente eseguire entrambi i bit del calcolo:

awk <.ssh/known_hosts '$1~/thehostname/{print $3}' |openssl base64 -d |openssl sha256 |openssl base64

ma se non hai OpenSSL dovrebbe essere facile combinare altri strumenti base64 e sha256.


Grazie per la risposta dettagliata. Questo è stato molto chiaro.
Charles Belov,

Solo una domanda per favore ... L'hash MD5 viene utilizzato dal client SSH solo localmente (per mostrare le impronte digitali) e le chiavi vengono verificate da chiavi pubbliche (BLOB) durante le negoziazioni?
Massima

@Maxim: quale client? Le impronte digitali sono hash e vengono calcolate localmente, anche se, come ho detto per impostazione predefinita, OpenSSH non è più MD5. OpenSSH può archiviare come ho detto (e rileggere) un blob in known_hostse confronta l'intera chiave. PuTTY normalmente memorizza la chiave nel registro come ho detto 'a pezzi' (non un blob) e confronta l'intera chiave, ma se usi la finestra di dialogo SSH / Kex 'Configura manualmente le chiavi host ... o le impronte digitali per accettarlo' può essere una chiave (BLOB) o un'impronta digitale (attualmente solo MD5) da confrontare (e non archiviare).
dave_thompson_085,

Su Windows sto usando fork di KiTTY con le impostazioni predefinite per la sicurezza (suppongo che faccia le stesse cose di PuTTY). E github.com/michaellukashov/Far-NetBox , plugin per FarManager. Quindi presumo che la tua risposta dice "dipende". È strano il motivo per cui non è specificato come i client devono eseguire la convalida.
Massima
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.