Come aggiungo le chiavi SSH al file authorized_keys?

144

Ho un server Ubuntu su Amazon EC2, che utilizzo per lo sviluppo, e oggi ho stupidamente cancellato tutto dal mio file ~/.ssh/authorized_keys . Fortunatamente ho un SSH aperto, quindi sono ancora connesso e posso correggere il file, ma quando tento di rimettere il mio file chiave, non funziona. Ricevo ancora il permesso negato dal server sul mio computer locale.

authorized_keys ha i permessi 600. Ho provato ad accodare la mia chiave SSH con ssh-rsa e lasciare spento ssh-rsa. Ho anche provato a fare in modo che il tasto SSH fosse tutto su una riga, ma non funzionava neanche.

C'è qualcos'altro che devo fare come ricaricare il file un po 'come?

    
posta Dave Long 01.06.2011 - 18:02

9 risposte

168

Dovresti mai salvare il file con i suoi contenuti a partire da -----BEGIN RSA PRIVATE KEY----- sul server, ovvero la tua chiave privata . Invece, devi inserire la chiave pubblica nel file ~/.ssh/authorized_keys .

Questa chiave pubblica ha l'estensione .pub quando viene generata utilizzando ssh-keygen e il suo contenuto inizia con ssh-rsa AAAAB3 . (Il formato binario è descritto nelle risposte a questa domanda ).

Le autorizzazioni di ~/.ssh sul server dovrebbero essere 700. Il file ~/.ssh/authorized_keys (sul server) dovrebbe avere una modalità di 600. Le autorizzazioni della chiave (privata) sul lato client dovrebbero essere 600.

Se la chiave privata non è protetta con una password e la metti sul server, ti consiglio di crearne una nuova:

ssh-keygen -t rsa

Puoi saltare questo passaggio se sei completamente sicuro che nessuno possa recuperare la chiave privata eliminata dal server.

Se ciò non aiuta, esegui ssh con le opzioni per maggiore verbosità:

ssh -vvv [email protected]

Sul lato server, puoi rivedere /var/log/auth.log per i dettagli.

    
risposta data Lekensteyn 01.06.2011 - 18:29
145

Un modo alternativo per installare la tua chiave pubblica nel authorized_keys del dispositivo remoto:

cat ~/.ssh/id_rsa.pub | ssh [email protected] "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Alcuni vantaggi:

  • non richiede ssh-copy-id da installare.

  • garantisce che mkdir funzioni prima di tentare di aggiungere id_rsa.pub a authorized_keys .

risposta data Marius Butuc 27.02.2013 - 20:31
115

Se disponi di autenticazione basata sull'accesso, utilizza ssh-copy-id per aggiungere le tue chiavi pubbliche a server remoto.

ssh-copy-id [email protected]
    
risposta data Shoaib Nawaz 01.06.2011 - 18:32
32
local> scp .ssh/id_dsa.pub remote.com:
local> ssh remote.com
remote> cat id_dsa.pub >> .ssh/authorized_keys
remote> rm id_dsa.pub
remote> exit
    
risposta data jjg 01.06.2011 - 20:23
7

Il modo più semplice è copiare e incollare ...

Prima vista / copia il contenuto della tua chiave pubblica locale id_rsa.pub incluso l'inizio "ssh-rsa" fino a quando non termina con il tuo indirizzo email:

cat ~/.ssh/id_rsa.pub

Quindi modifica authorized_keys sul server e incolla il contenuto degli appunti sotto qualsiasi altra chiave in quel file:

nano ~/.ssh/authorized_keys

E salva Ctl+O , esci dal file Ctl+X , esci dalla sessione SSH exit e prova ad accedere nuovamente per confermare che ha funzionato. Se non ha chiesto una password ha funzionato.

    
risposta data ow3n 07.09.2015 - 20:42
3

Dopo aver salvato la chiave pubblica, dovresti salvare la chiave privata in una directory e un file sul tuo pc. E nella sezione auth di ssh on putty dovresti puntare al file della chiave privata che hai salvato sul desktop. Funzionerà. Funziona per me.

    
risposta data user273266 23.04.2014 - 21:59
3

Ho pensato di poter contribuire a questo dato che riguarda specificamente le istanze AWS e tutte le risposte trattano il problema solo come un problema di Linux, come se fosse un pezzo di hardware. La prima cosa che devi capire è che non devi mai, mai, non trattare le istanze EC2 come hardware. Questo creerà più lavoro per te. Trattali volatili. Questo è il più grande ostacolo che vedo le persone che hanno con AWS. Crea un AMI della tua istanza e inserisci la chiave necessaria nella nuova istanza. cloud-init si prenderà cura di esso per te. Più in dettaglio tutto ciò che devi fare è usare la chiave pubblica corretta quando crei la nuova istanza fuori dall'AMI dell'originale. Se, come nei commenti della risposta approvata, desideri generare la tua coppia di chiavi di file pub e pem, AWS ti offre la possibilità di caricare le tue chiavi pubbliche per l'utilizzo in EC2.

link

    
risposta data einarc 03.03.2016 - 02:22
1

Ottieni una shell sulla macchina remota in cui vuoi mettere la chiave e poi puoi eseguire questa one-liner per creare i file e le directory necessari, impostare i permessi e aggiungere la chiave al file. Ovviamente devi modificare la parte KEYGOESHERE di seguito e il commento successivo.

mkdir -p ~/.ssh && chmod 700 ~/.ssh && touch ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys && echo "ssh-rsa KEYGOESHERE [email protected] or note" >> ~/.ssh/authorized_keys
    
risposta data Sarel Botha 07.12.2016 - 21:33
1

Ecco una variante in cui potresti avere un elenco di nomi di file di chiavi pubbliche in un file di testo e il grosso lotto di file di chiave pubblica si trovano anche nella stessa directory.

Questa variazione può essere utile se si fornisse un elenco enorme di file di chiave pubblica da importare: -)

$ for i in $(cat ListOfPubKeyFiles.txt) ; do cat $i | ssh [email protected] "cat >> ~/.ssh/authorized_keys"; done
    
risposta data jlmontes 23.08.2016 - 19:32

Leggi altre domande sui tag