Come installo una chiave privata SSH generata da PuTTYgen?


50

Ho impostato il mio server Linux per accettare le connessioni dal mio PC di casa aggiungendo la chiave pubblica generata da PuTTYgen al authorized_keysfile.

Ora sto provando a connettermi alla stessa macchina, ma questa volta da un'altra macchina Ubuntu. Devo usare la stessa chiave privata (per una strana ragione, non chiedere ...) e non riesco proprio a installarla sul mio client Ubuntu.

Devo convertirlo in qualche altro formato?

Risposte:


25

Non sono sicuro se la tua chiave privata funzionerà in Ubuntu, ma vale la pena provare. basta copiare le chiavi per /home/yourName/.ssh/nominare la chiave privata come id_rsae la chiave pubblica come id_rsa.pub.

Se ciò non funziona, puoi creare la tua coppia di chiavi ssh usando ssh-keygene copiare la nuova chiave pubblica sul server e ssh come segue

ssh -i ~/.ssh/id_rsa_ubuntu.pub <hostName>

Non ci ho giocato, ma sento che ssh-agent può anche essere usato per gestire ssh-keys.


3
Questo funziona in Ubuntu. Tuttavia, assicurati di non sovrascrivere una chiave id_rsa esistente se ne hai già una (copiando la nuova chiave sopra di essa) a meno che tu non sappia che non usi quella vecchia.
David Oneill,

5
Questa risposta manca completamente di informazioni, come si ottiene il id_rsafile (convertendo la chiave in PuTTYgen)
Martin Prikryl

38

Per coincidenza, ho dovuto farlo. È necessario convertire le chiavi in ​​formato OpenSSH. Il comando per farlo è:

ssh-keygen -i -f puttygen_key > openssh_key

quindi è possibile copiare il contenuto di openssh_keyin .ssh/authorized_keysproprio come con una normale chiave SSH.

L' -iopzione è quella che dice ssh-keygendi fare la conversione. L' -fopzione indica dove trovare la chiave da convertire.

Funziona con chiavi non crittografate . La chiave pubblica non è crittografata, ma quella privata è probabilmente crittografata. Non sono sicuro che esista un modo per decodificare la chiave privata, convertirla e quindi ricodificarla. Potrebbe essere più semplice usare nuove chiavi come suggerisce l'altra risposta (e consiglierei di usare ssh-agentsebbene sia ortogonale al problema attuale).


1
Questa risposta risolve il mio problema. Ho dovuto convertire la chiave. Grazie
Leticia,

1
Questo risolve solo una parte del problema convertendo la chiave pubblica. Ho usato la risposta di @ user18617 per convertire anche la chiave privata.
ᴠɪɴᴄᴇɴᴛ


@ ÉdouardLopez puttygen_keydovrebbe essere la tua chiave pubblica, non la chiave privata (* .ppk).
endolith

28

Andrew Stacey ha spiegato come convertire le chiavi in ​​formato OpenSSH su Linux.

Se vuoi fare lo stesso su Windows, segui questi passaggi:

  1. Avviare PuTTYGen.
  2. Fai clic su "Carica".
  3. Seleziona la tua chiave privata e inserisci la passphrase.
  4. Dal menu "Conversioni", seleziona "Esporta chiave OpenSSH".
  5. Scegli il nome del file di destinazione.

1
Volevo solo dire che ha funzionato per me sul mio Mac OS X, anche se so che questa è una sezione di Ubuntu. Ho convertito la mia chiave privata generata in Windows come descritto sopra, quindi l'ho copiata nel mio mac in ~ / .ssh / id_rsa. chmod id_rsa 600 per impedire a Mac di lamentarsene.
Richard

24

Come riutilizzare le coppie di chiavi Putty in Ubuntu come chiavi OpenSSH:

apt-get install putty-tools #Install Putty tools in Linux
cd /my-putty-keys
puttygen mykey-sec.ppk ‐O private‐openssh ‐o my‐openssh‐key.sec
ssh-keygen -i -f mykey-pub.ppk > my-openssh-key.pub

Poiché lo scopo del passaggio 4 è aggiungere la tua chiave pubblica a * ~. / Ssh / authorized_keys *, quindi puoi usare la tua chiave segreta Putty in questo modo invece di fare 4 come passaggio intermedio:

puttygen ‐L mykey-sec.ppk >> $HOME/.ssh/authorized_keys

1
circa il passaggio 4: se il nome della chiave privata era mykey-sec.ppk, il nome del file di origine in questo caso sarebbe generalmente mykey-sec.pub.
Kinjal Dixit,

2
La denominazione di una chiave pubblica (presumibilmente nel formato RFC 4716) mykey-pub.ppkè piuttosto confusa, poiché il .ppkfile ha un formato completamente diverso e viene utilizzato per le coppie di chiavi (non solo per la chiave pubblica).
Martin Prikryl,

L'ultima riga di puttygen ha funzionato perfettamente per me dopo aver installato putty-tools su debian 9. Le altre righe e risposte qui non hanno funzionato.
Tim

Stranamente stavo ottenendo puttygen: unknown output type `private‐openssh'e puttygen: cannot handle more than one input filequindi ho copiato i caratteri esatti dal codice sorgente e ho rinominato la mia chiave pubblica in qualcos'altro completamente
CPHPython

come avvertimento, se si tenta di eseguire i comandi in questa risposta e si ottiene "puttygen: impossibile gestire più di un file di input", è probabile che il carattere trattino in "private-openssh" non sia incollato come un trattino ASCII effettivo quindi Puttygen non lo riconosce. Invece, scrivi tu stesso la parola e dovrebbe funzionare.
Matt Styles

9

PuTTY / PuTTYgen utilizza il proprio formato proprietario della coppia di chiavi. Non funzionerà su Linux, dove prevale il formato di chiavi OpenSSH.

  • In PuTTYgen, puoi vedere direttamente (e copiare + incollare) una chiave pubblica nel formato usato dal authorized_keysfile OpenSSH .

  • È possibile utilizzare il pulsante Salva chiave pubblica per salvare la chiave pubblica nel .pubformato (RFC 4716). Su Linux il file è generalmente chiamato id_rsa.pub(o id_dsa.pub). Ma di solito non è necessario.

  • Utilizza le conversioni> Esporta chiave OpenSSH per esportare la chiave privata nel formato OpenSSH. Su Linux il file è in genere denominato id_rsa(o id_dsa) ed è archiviato nella .sshcartella.

Guarda il funzionario Usando PuTTYgen, il generatore di chiavi PuTTY .

Puoi anche usare una versione Linux di PuTTYgen per fare la conversione. La versione di Linux è a riga di comando, contrariamente alla versione di Windows.

puttygen mykey.ppk ‐O private‐openssh ‐o id_rsa

Vedi la puttygenpagina man di Linux .


2

Ho trovato un'altra soluzione chiara.

Quando puttygencrei una chiave, vai al menu principale - Conversione e fai clic su Esporta chiave openssh

Il contenuto del file inizierà e finirà con

-----BEGIN RSA PRIVATE KEY----- 

-----END RSA PRIVATE KEY-----
  • per utente root Copia quel file chiave /root/.ssh/come id_rsaoid_dsa

  • per altri utenti Copia quel file chiave /home/user/.ssh/come id_rsaoid_dsa

Nota :

  1. Non è necessario modificarlo authorized_keys.
  2. Sto usando Amazon Linux
  3. Autorizzazione file 0600

1

* * Fai attenzione e assicurati di avere accesso alla console dalla scatola perché se non lo fai nel modo giusto, non sarai in grado di reinserire il messaggio finché non lo riparerai dalla console.

Il processo è molto più semplice di quanto pensi. Carica di nuovo la coppia di chiavi pubblica / privata generata in puttygen. In puttygen, noterai una finestra al centro dello schermo che dice: "Chiave pubblica per incollare nel file Open SSH autorizzato_keys:".

evidenziare l'intero contenuto della casella e premere control-c per copiarlo.

SSH nella tua casella di Linux e incollalo nel file "/home/username/.ssh/authorized_keys". Preferisco usare nano e fare semplicemente clic con il tasto destro per incollarlo. Assicurati che rimanga tutto su una riga.

Modifica il tuo file / etc / sshd_config secondo necessità e riavvia il tuo servizio sshd: "service ssh restart"

Se hai bisogno di un file di esempio sshd_config, fammi sapere e posso pubblicare il mio.

L'ho fatto su Ubuntu 8.04, 10.04 e 12.04 LTS server e funziona perfettamente.


0

Non sono sicuro che questo thread sia ancora attivo, ma mi sono imbattuto in un problema simile con l'edizione dell'anniversario di Windows 10 che ora supporta il kernel Ubuntu. Uso prima Putty per collegarmi a una macchina Linux. Per generare id_rsa in formato linux, usa puttykeygen e carica la tua chiave privata putty quindi fai clic sulla conversione e scegli la seconda opzione.

Conevrsions di Putty KeyGenerator

apri il file della chiave appena generato e copia tutto il suo contenuto, assicurati che il tuo contenuto inizi con: ----- INIZIA TASTO PRIVATO RSA ----- e termina con ----- FINE TASTO PRIVATO RSA -----

vi id_rsa nella tua directory ~ / .ssh e incolla il contenuto copiato, questo è necessario perché Linux altrimenti non capirà il contenuto del file.

Questo è tutto, prova ssh sul server remoto, dovrebbe funzionare.

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.