Che differenza tra chiave openssh e chiave putty?


48

Ho scoperto che ssh-keygen(pacchetto "ssh") produce chiavi diverse da puttygen(pacchetto "putty").

Se creo chiavi pubbliche e private con ssh-keygenalcuni server ssh non accetterò le mie chiavi. Se creo le chiavi con puttygenun solo server, lo accetto.

Perché i repository Linux non propongono una soluzione comune (pacchetto) per questo? Ho trovato un altro pacchetto ssh-3.2.9.1 che crea chiavi che funzionano con putty. Ma perché non esiste una soluzione pratica in SSH?


1
Per cominciare PuTTYGen offre esplicitamente la conversione delle chiavi. Quindi i formati nativi che OpenSSH e PuTTY usano per memorizzare le chiavi sono diversi. Tuttavia, gli algoritmi supportati sono compatibili. Suppongo che tu abbia inserito un valore funky nel campo che ti permette di dare il numero di bit (ad esempio DSA sembra richiedere 1024 bit) per la chiave generata in PuTTYGen o in alternativa che hai scelto qualcosa come RSA-1 che la maggior parte dei server avrà disabilitato in questi giorni. Sfortunatamente la domanda non indica davvero cosa hai provato e previsto.
0xC0000022L

Risposte:


47

OpenSSH è l'implementazione standard de facto del protocollo SSH. Se PuTTY e OpenSSH differiscono, PuTTY è quello che è incompatibile.

Se generi una chiave con OpenSSH usando ssh-keygencon le opzioni predefinite, funzionerà praticamente con tutti i server là fuori. Un server che non accetta tale chiave sarebbe antico, usando una diversa implementazione di SSH o configurato in uno strano modo restrittivo. Chiavi di tipo non predefinito potrebbero non essere supportate su alcuni server, in particolare le chiavi ECDSA rendono la creazione della sessione molto più veloce ma sono supportate solo dalle versioni recenti di OpenSSH.

PuTTY utilizza un formato di file chiave diverso. Viene fornito con strumenti per la conversione tra il proprio .ppkformato e il formato di OpenSSH.

Questo ssh-3.2.9.1 che hai trovato è un prodotto commerciale che ha il suo diverso formato di chiave privata. Non c'è motivo di usarlo al posto di OpenSSH, può essere solo meno compatibile, richiede un pagamento e non c'è quasi tutorial su come usarlo là fuori.


24

La maggior parte delle distribuzioni Linux sono puttydisponibili per Linux. È possibile installare puttysul lato Linux e utilizzare puttygenper convertire i file .ppk nei normali file di chiavi in ​​stile ssh (chiamati file PEM - anche se non hanno un .pem nel nome del file).

puttygen id_dsa.ppk -O private-openssh -o id_dsa

NOTA: è inoltre possibile utilizzare puttygenper importare nuovamente i file PEM in stile ssh putty.

L'autore di PuTTY ha optato per la semplicità in modo che le chiavi pubbliche e private che costituiscono la sicurezza sottostante utilizzata dall'autenticazione con chiave putty / ssh 2 siano archiviate in un unico file .ppk proprietario. In genere queste chiavi sono gestite come ssh da 2 file separati.

Su Linux i file delle chiavi sono generalmente conservati nella directory .ssh.

C'è una buona panoramica del processo di conversione qui in questa domanda Stack Overflow intitolata: Converti il ​​formato di file PEM in PPK .

L'autore di putty discute anche la sua logica per l'uso dei file .ppk nel puttymanuale dell'utente . Puoi leggerlo qui nella sezione 8.2.12.


Vuoi dire che il mio Linux ha SSH-1 obsoleto e vulnerabile (se non uso lo stucco)? Ed è conveniente? Le vulnerabilità di SSH-1 sono descritte in wikipedia
YarLinux

Non sono sicuro di dove l'hai preso. No, dovresti stare bene. Quale versione di Linux stai usando? Quale Linux Distro stai usando? Eseguire questo comando per trovare la propria versione di Linux: uname -a. Distro Linux: lsb_release -a.
slm

Uso Ubuntu 12.04. Vuoi dire che SSH-2 ha diversi formati? Ho appena confuso per nome del pacchetto e comando quale "ssh".
YarLinux

Vedo. Lo strumento ssh a cui ti riferisci di solito fa parte di un pacchetto chiamato openssh. La versione di questo software non ha nulla a che fare con SSH-1 e SSH-2 a cui ti riferisci. Tale terminologia (SSH-1 e SSH-2) si riferisce al tipo di file chiave con cui stai lavorando. Questo tipo di file non dovrebbe essere un problema per te finché utilizzi le versioni recenti di openssh.
slm

Esistono tre diversi formati di chiavi? OpenSSH, ssh.com e PuTTY?
YarLinux

12

Entrambi memorizzano una "coppia di chiavi RSA per la versione 2 del protocollo SSH" e possono essere convertiti in modo intercambiabile; tuttavia, per quanto riguarda l'attuale differenza di formato memorizzata:

da https://www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/key-formats-natively.html

I vantaggi del formato chiave PuTTY sono:

  • La metà pubblica della chiave è memorizzata in testo normale . Il formato della chiave privata di OpenSSH crittografa l'intero file della chiave , in modo che il client debba chiederti la passphrase prima di poter fare qualsiasi cosa con la chiave. In particolare, ciò significa che deve richiedere la passphrase prima che possa persino offrire la chiave pubblica al server per l'autenticazione. Il formato di PuTTY memorizza la chiave pubblica in testo semplice e crittografa solo la metà privata, il che significa che può inviare automaticamente la chiave pubblica al server e determinare se il server è disposto ad accettare autenticazioni con quella chiave e chiederà sempre passphrase se è davvero necessario.

    Penso che OpenSSH leggerà a.pubfile a questo scopo se appare accanto al file della chiave privata, ma questa è fonte di confusione spesso quanto la convenienza (ho visto le persone sostituire un file di chiave privata e lasciare un obsoleto .pubal suo fianco, e quindi essere molto confuso dal risultante processo di autenticazione SSH!).
  • La chiave è completamente a prova di manomissione. I formati di chiave che memorizzano la chiave pubblica in testo normale possono essere vulnerabili a un attacco di manomissione, in cui la metà pubblica della chiave viene modificata in modo tale che le firme fatte con la chiave documentata diffondano informazioni sulla metà privata. Per questo motivo, il formato chiave di PuTTY contiene un MAC (Message Authentication Code), cancellato dalla passphrase e che copre le metà pubbliche e private della chiave.Pertanto, forniamo la comodità di avere la chiave pubblica disponibile in testo normale, ma rileviamo anche immediatamente qualsiasi tentativo di manomissione, offrendo una combinazione di sicurezza e praticità che non credo si trovi in ​​nessun altro formato di chiave. Come vantaggio collaterale, il MAC copre anche il commento della chiave, impedendo ogni possibile danno che potrebbe essere possibile se qualcuno dovesse scambiare due chiavi e scambiare i commenti.

    L'approccio di OpenSSH di mantenere la chiave pubblica crittografata potrebbeforniscono anche un po 'di sicurezza contro questo tipo di attacco, ma non è chiaro che fornisca una protezione adeguata: la crittografia progettata per la riservatezza spesso lascia dei modi in cui i dati crittografati possono essere utilmente modificati da un utente malintenzionato. Per una vera protezione dell'integrità, vuoi un vero MAC dedicato, progettato per fare esattamente questo.

[ enfasi aggiunta]

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.