Domanda Come posso recuperare la chiave pubblica da una chiave privata SSH?


Una chiave privata SSH come generata da ssh-keygen contiene una parte chiave pubblica. Come posso recuperare questa chiave pubblica dalla chiave privata? Ho perso la mia chiave pubblica e ho bisogno di inserire il contenuto di questa chiave pubblica nei server authorized_keys file e non voglio creare una nuova coppia di chiavi.

In alternativa formulato: come faccio a creare il id_rsa.pub file da a id_rsa file?


369
2017-07-18 09:57


origine


pbcopy > ~/.ssh/id_rsa.pub oops. - Nick T
@NickT - pbcopy è un comando MacOSX. Inoltre, è inutile se si è riavviato, disconnesso o copiato qualcos'altro negli Appunti. - jsnfwlr


risposte:


Ho trovato la risposta su Server Fault: Creare una chiave SSH pubblica dalla chiave privata?

L'opzione -y emette la chiave pubblica:

ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub

Come nota a margine, il commento della chiave pubblica è perso. Ho avuto un sito che ha richiesto il commento (Launchpad?), Quindi è necessario modificare ~/.ssh/id_rsa.pub e aggiungi un commento alla prima riga con uno spazio tra il commento e i dati chiave. Un esempio di chiave pubblica è mostrato troncato di seguito.

ssh-rsa AAAA..../VqDjtS5 ubuntu@ubuntu

Per le chiavi che sono state aggiunte all'agente SSH (un programma che viene eseguito in background ed evita la necessità di reinserire la passphrase del file di chiavi più e più volte), è possibile utilizzare il ssh-add -L comando per elencare le chiavi pubbliche per le chiavi che sono state aggiunte all'agente (via ssh-add -l). Ciò è utile quando la chiave SSH è memorizzata su una smart card (e l'accesso al file della chiave privata non è possibile).


574
2017-07-18 10:12



l'hai reso un pezzo di torta. Grazie - bragboy
Si prega di notare che il file della chiave privata ~/.ssh/id_rsa deve essere limitato al tuo nome utente. uso $ sudo chmod 600 ~/.ssh/id_rsa e inserisci le tue credenziali di root per restringere, quindi puoi emettere il file della chiave pubblica. Altrimenti riceverai un avviso di file di chiave privata senza limitazioni. - Mark Mikofski
@MarkMikofski Non ce n'è bisogno sudo, si suppone di possedere già la chiave privata. Altrimenti non puoi leggerlo in primo luogo. - Lekensteyn
@Lekensteyn, grazie, certo che hai ragione !. Anche 400 è raccomandato poiché non è necessario scrivere per digitare il file della chiave privata. Il comando corretto dovrebbe essere $ chmod 400 ~/.ssh/id_rsa - Mark Mikofski
Il commento chiave privata è perso. Vedere stackoverflow.com/questions/38290929/... - weberjn


Questa è una soluzione specifica per gli utenti che utilizzano Windows to SSH nelle loro macchine remote, comprese le immagini cloud su Amazon AWS e GCE.

(Disclaimer)

Recentemente ho utilizzato questa soluzione per accedere in remoto a nuove immagini VM distribuite su GCE.


Strumenti usati:

  1. puttygen
  2. WinSCP

Passi per eseguire:

  1. Genera una coppia di chiavi pubblica / privata usando puttygen.
  2. Carica una chiave pubblica sul tuo server nel cloud o in una posizione remota.

Descrizione (come fare):

  1. Genera una chiave / coppia o usa una chiave privata esistente:

    Se hai una chiave privata:

    Apri puttygen, premi il pulsante di caricamento e seleziona il tuo file di chiave privata (* .pem).

    Se fate non avere una chiave privata:

    • Apri puttygen,
    • Selezionare il tipo di chiave desiderata SSH2 DSA (è possibile utilizzare RSA o DSA) nella sezione Parametri ... ed è importante lasciare vuoto il campo della passphrase,
    • Premere generare e seguire le istruzioni per generare una coppia di chiavi (pubblica / privata).

    Sample Key Generation pic

  2. Crea un nuovo file 'authorized_keys' (con Blocco note):

    Copia i dati della tua chiave pubblica dalla sezione "Chiave pubblica per incollare nel file authorized_keys di OpenSSH" del Generatore di chiavi PuTTY e incolla i dati chiave nel file "authorized_keys".

    Assicurati che ci sia solo una riga di testo in questo file.

  3. Carica la chiave su un server Linux:

    • Apri WinSCP,
    • Seleziona il protocollo del file SFTP e accedi con le tue credenziali SSH.
    • In caso di successo, viene visualizzata la struttura della directory home sulla macchina remota.

    Carica il file authorized_keys nella directory home sul computer remoto.

  4. Imposta le autorizzazioni appropriate:

    Fare un .ssh directory (se non esiste)

    Copia il authorized_keysfile nella directory .ssh (questo sostituirà qualsiasi esistente authorized_keys file; prendere atto di questo).

    Se il file esiste, è sufficiente aggiungere il contenuto di questo file al file esistente.

    Esegui comandi per impostare le autorizzazioni:

    sudo chmod 700 .ssh && chmod 600 .ssh/authorized_keys
    

Ora sarete in grado di ssh su una macchina remota senza immettere credenziali ogni volta.

Ulteriori letture:

  1. Generazione e caricamento delle chiavi SSH sotto Windows

  2. Autenticazione senza password utilizzando OpenSSH Key, certificates .pem e .pub


12
2017-11-20 06:18



Se la tua home directory è codificata, fai questo: askubuntu.com/questions/439184/... - devprashant
anche se la tua risposta non è davvero pertinente alla domanda, la voterò a causa del tuo entusiasmo. - Truong Nguyen