Dove sono le mie chiavi SSH private / pubbliche su UNIX?


17

Sto iniziando a capire come funzionano i sistemi RSA e chiave pubblica / privata e mi chiedevo dove sono archiviate le mie chiavi SSH private e pubbliche. Quando vado nella mia home directory e sfoglio la mia directory .ssh (cd .ssh), vedo solo il file "known_hosts", che credo contenga le chiavi pubbliche di diversi server SSH remoti che conosco.

Dove posso trovare queste chiavi? Non ricordo nemmeno di averli creati a proposito, ma poiché ho già stabilito connessioni ssh in precedenza, devono essere da qualche parte.

Sto usando OpenSSH_5.2p1 con MAC OS 10.6.

Grazie!

Risposte:


15

~/.ssh/id_rsae di ~/id_rsa.pubsolito. Ma non ne consegue che ssh deve creare una coppia e salvarle: ssh utilizza fondamentalmente il protocollo SSL, che stabilisce una chiave di sessione utilizzando l' algoritmo di scambio di chiavi Diffie / Hellman o qualche variante. Ciò significa che l'handshake che imposta la connessione genera una chiave di sessione e la scarta al termine della sessione.

Leggendo sull'algoritmo, è piuttosto ingegnoso: usando una matematica abbastanza semplice, stabilisce una chiave nota ad entrambe le estremità della connessione senza mai inviare la chiave sulla connessione.


Ciò significa che se non mi fosse mai stato chiesto di generare chiavi SSH che RSA non sarebbe mai stato usato? In altre parole, che un algoritmo asimmetrico è stato usato per condividere la chiave di sessione, ma che le chiavi temporanee pubbliche / private per la connessione non sono state memorizzate sul mio computer?

Esatto. In realtà, la crittografia è simmetrica: gli algoritmi asimmetrici non sono adatti allo streaming. Diffie-Hellman viene utilizzato per generare una chiave di sessione per la crittografia simmetrica. Se invece usi una coppia di chiavi pubblica / privata, vengono usate in qualche altra stretta di mano per creare una chiave di sessione per l'algoritmo simmetrico.
Charlie Martin,

@mieli: No. Non sono mai stati creati in primo luogo. publickeyè solo un possibile metodo di autenticazione di molti; se hai semplicemente effettuato l'accesso utilizzando passwordo keyboard-interactive, è stata inviata la password stessa. (Nota: non confondere la chiave utente, la chiave host e le chiavi di sessione.)
user1686

@grawity siamo per lo più d'accordo qui, ma facciamo un po 'attenzione. Lo scambio di chiavi Diffie-Hellman è correlato a RSA e ad altri algoritmi di crittografia asimmetrica ed è essenzialmente asimmetrico, poiché entrambe le parti dello scambio hanno la loro "metà" dell'eventuale accordo. Essi fare avere due parti della chiave, e la chiave eventuale e l'esatto processo per costruirlo sono scartate alla fine della sessione. Non sono, tuttavia, le parti pubbliche e private di una coppia RSA.
Charlie Martin,

4

Le tue chiavi ssh pubbliche e private personali sono normalmente archiviate in:

$HOME/.ssh/id_dsa     (private key)
$HOME/.ssh/id_dsa.pub (public key)

Oppure potrebbero essere id_rsae id_rsa.pubse hai creato chiavi RSA anziché chiavi DSA (OpenSSH supporta entrambi i moduli).

Ma il fatto che tu abbia già stabilito connessioni ssh non implica che tu abbia chiavi ssh. Se il sshcomando non trova la tua chiave personale, ti chiederà una password per il sistema remoto. Questo è meno sicuro dell'uso delle chiavi.

Normalmente dovresti creare la tua chiave privata ssh con una passphrase. Se lo crei senza una passphrase, qualcuno che ottiene una copia della tua chiave privata può impersonarti. ssh-agentti consente di utilizzare una chiave con una passphrase senza dover reinserire la passphrase ogni volta che la usi.


2

Se non hai creato una coppia di chiavi, probabilmente non ne hai una.

Il traffico SSH2 è crittografato con una chiave di sessione simmetrica stabilita utilizzando DH, algoritmi ECDH o scambio di chiavi GSSAPI. Né la chiave host né la chiave utente vengono utilizzate per crittografare i dati: il loro unico scopo è l' autenticazione .

Ora ricorda che SSH supporta diversi metodi di autenticazione: inoltre publickey, quasi tutti i server accettano il semplice passworde / o keyboard-interactive, in cui non ha luogo la generazione o l'utilizzo della chiave: la password viene semplicemente inviata al server remoto per la verifica.

In altre parole, "poiché ho già stabilito connessioni ssh in precedenza, devono trovarsi da qualche parte" non è corretto - la coppia di chiavi utente non è necessaria per stabilire connessioni.


Se fatto creare una coppia di chiavi, sarà probabilmente in ~/.ssh/id_*- ad esempio, id_rsaper la coppia di chiavi RSA di default, id_ecdsaper ECDSA, id_dsaper DSA. Sebbene questi file contengano parti private e pubbliche della coppia di chiavi, la parte pubblica viene solitamente estratta automaticamente in un id_*.pubfile separato per comodità ( id_rsa.pubper id_rsae così via).

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.