Come posso convertire la mia chiave segreta PGP crittografata per l'utilizzo dell'autenticazione SSH?

7

Desidero nascondere la mia chiave PGP (RSA) da utilizzare per eseguire l'autenticazione SSH. Dopo alcune ricerche, ho trovato openpgp2ssh , che sembra essere uno strumento appropriato. Tutto funziona bene per il mio pubkey:

$ gpg --export "$key" | openpgp2ssh "$key"
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC51Cw3ZxO5TSncaDLzQ89SSZAF7Z9cFR5mv4uhmGw3tDfiaAjNFVjp90YNYi2teveb5EjncIK5RMYQefKpvvsawQZ4KJKbrDFrrQbMmIG67A1qopKxn5rF8QsjzYvrlGSi9pnjfZVN+VfTaspomVpwCpe9oxd8ZlKdViABgBV8p0hL6I4Gqm+I37az9apO4wCvlN8XJMia3J1JxIShyLYGfa2ued5rRFYiCEV3/smtrjycEZ8OYLTLhC/vydhXCSYrCxWHxhv213Uho641cttaL2SlPGDX9Uuq3JfjCoC0Y6EN7/+GV2u9R48/QJpUaOjEhLRm8F/LFRuHDFYJmyNgv11DsRAMvh7psGY2196bBYSdrzfZxxCQDdJrNxNzQvIG33JavMXOiBAbAYxaq7DWWlVPcE3fy+VxYPH+XicqxD58qdWapspJhRxEKzQa7IfUULGQHVg31NYWGsN4dkva2XjV35SZf6M3nrfjz4XitiwH0SOxbXBRKUdZhwCnr+5GcsWkax7Ph6QGvWVP6mgpUDBuMQ+znkUVr8tDkmrm5M6PC6x8SOA0ecdjNKB2NK23A6w4V7lsfMvDl4uBMzxRzXOXLIUXunsZ7MQTV5ymtZvk3oYccnXNxtVZGF2Cu9Wfy+6c+XL+z4Zfc6XvPSgtBDOApV3owL86OOoLO5X3HQ==

Tuttavia, quando provo a convertire la mia chiave privata per l'uso, viene visualizzato il seguente errore:

$ gpg --export-secret-key "$key" | openpgp2ssh "$key"
We cannot handle encrypted secret keys.  Skipping!

La mia chiave segreta è effettivamente crittografata. Preferirei un metodo per convertire la mia chiave segreta PGP in dati che i programmi SSH standard possono comprendere, invece di fare affidamento su plug-in non standard. È possibile?

    
posta Chris Down 10.12.2011 - 01:16
fonte

3 risposte

8

Sono uno degli autori a monte di openpgp2ssh. Dispiace per la confusione. Noterai che la pagina man di openpgp2ssh (1) ha una sezione "BUGS" che dice:

 openpgp2ssh currently cannot handle passphrase-protected secret keys on
 input.

Se puoi proporre un messaggio di errore a una riga più chiaro o un miglioramento alla pagina man in modo che tu possa trovare la tua risposta nella documentazione più facile, saremo lieti di migliorare lo strumento. Mandaci una riga su [email protected]. Non credo che nessuno degli attuali sviluppatori segua lo stackexchange da vicino al momento, quindi la mailing list è un modo migliore per mettersi in contatto.

    
risposta data 14.12.2011 - 10:45
fonte
9

Non ci sarebbe alcun punto nella conversione di una chiave pubblica se nessuno può convertire anche la chiave privata, il che significa che questo programma è stato creato pensando a tale processo di conversione. Noterai che il messaggio di errore riporta "Non possiamo gestire le chiavi segrete crittografate .

Pertanto, ti consiglio di rimuovere la password della chiave privata utilizzando il comando passwd in gpg --edit-key . Ovviamente dovresti ricodificare sia la vecchia chiave privata gpg che la nuova chiave privata ssh dopo la conversione.

Se ti preoccupi della presenza di una chiave non crittografata sull'unità, crea una partizione crittografata usando encfs, TrueCrypt, ecc. oppure crea un ramdisk . Dovresti mantenere il ramdisk piccolo e di breve durata per evitare che il kernel lo scambia, a meno che non trovi qualche trucco per chiamare mlock. Qualsiasi file system crittografico dovrebbe già inglobare le proprie pagine di dati.

    
risposta data 10.12.2011 - 04:15
fonte
5

La grande risposta di Jeff Burdges mi ha mostrato il metodo finale. Ecco i passaggi esatti che ho seguito:

key=2A7D4D74

# Back up the original key so you can reimport it afterwards
gpg --export-secret-key "$key" > id_rsa.bak

# Now remove the encryption using the method listed in Jeff Burdges' answer:
# * gpg --edit-key "$key"
# * Issue passwd and remove the password
# * Quit, and save changes

# We convert the keys
gpg --export "$key" | openpgp2ssh "$key" > ~/.ssh/id_rsa.pub
gpg --export-secret-key "$key" | openpgp2ssh "$key" > ~/.ssh/id_rsa

# Then, we change the password for the SSH secret key
ssh-keygen -f ~/.ssh/id_rsa -p

# Now reimport the original key (deletion is required or for some reason it fails to reimport as encrypted)
gpg --delete-secret-key "$key"
gpg --import < id_rsa.bak
rm id_rsa.bak
    
risposta data 10.12.2011 - 05:17
fonte

Leggi altre domande sui tag