Domanda Come aggiungo le chiavi SSH al file authorized_keys?


Ho un server Ubuntu su Amazon EC2, che uso per lo sviluppo, e oggi ho stupidamente ripulito tutto dal mio ~/.ssh/authorized_keys file. 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 aggiungere la mia chiave SSH con ssh-rsa e lasciare spento ssh-rsa. Ho anche provato a far sì che il tasto SSH fosse tutto su una riga, ma non ha funzionato neanche.

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


147
2018-06-01 16:02


origine


Anni dopo, questo -still- sembra rilevante e attivo; volevo solo fare un'osservazione, parlare di aver schivato un proiettile: "Per fortuna ho un SSH aperto, quindi sono ancora connesso [..]" - sheesh! ; dP - Nostromov
Questo post, che è stato modificato per il mio compleanno, mi ha salvato due mesi fa il giorno del mio compleanno. - ytpillai


risposte:


Dovresti mai salva il file con il suo contenuto a partire da -----BEGIN RSA PRIVATE KEY----- sul server, questo è il tuo privato chiave. Invece, devi mettere il pubblico chiave nel ~/.ssh/authorized_keys file.

Questo pubblico la chiave ha il .pub estensione quando 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 dovrebbe 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 se sei completamente sicuro che nessuno possa recuperare la chiave privata cancellata dal server.

Se questo non aiuta, corri ssh con le opzioni per più verbosità:

ssh -vvv user@example.com

Sul lato server, è possibile rivedere /var/log/auth.log per dettagli.


170
2018-06-01 16:29



Con i server Amazon EC2 tutto quello che ottengo è la chiave privata (key.pem). Non ho una chiave pubblica da nessuna parte. - Dave Long
@Dave lungo: è necessario generare una nuova chiave utilizzando ssh-keygen -t rsa e metti il ​​nuovo creato id_rsa.pub file in ~/.ssh/authorized_keys sul tuo server. Guarda anche docs.amazonwebservices.com/AWSEC2/latest/UserGuide/... - Lekensteyn
@DaveLong: puoi generare la chiave pubblica dalla chiave privata in qualsiasi momento. Puoi farlo semplicemente con il seguente comando: ssh-keygen -y -f key.pem > key.pub - Morgan Blackthorne
@MorganBlackthorne Anche se è vero, ti consiglio di generare le tue chiavi private invece di accettarne una da fonti remote. Non puoi essere completamente sicuro che la chiave privata non sia trapelata. - Lekensteyn
@Gerrat Fixed². - Lekensteyn


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

cat ~/.ssh/id_rsa.pub | ssh USER@HOST "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Alcuni vantaggi:

  • non necessita ssh-copy-id essere installato.

  • lo garantisce mkdir funziona prima di tentare di aggiungere id_rsa.pub a authorized_keys.


147
2018-02-27 19:31



La tua risposta mi ha aiutato a farlo su più macchine remote senza pacchetti aggiuntivi, grazie. - nol
Ciò non garantisce che la directory "~ / .ssh" e il file "~ / .ssh / authorized_keys" verranno creati con le autorizzazioni corrette. - Nick
@Nick, ho avuto questo problema. Quindi forse è necessario prima verificare la loro esistenza, se manca creare correttamente con chmod (700 / cartella, 600 / file), e solo allora aggiungere? quindi forse non può essere una nave? - AnneTheAgile
@ AnneTheAgile Penso che cambiare il mkdir -p ~/.ssh parte della risposta fornita da @MariusButuc a umask 077 && mkdir -p ~/.ssh è tutto ciò che devi fare per assicurarti che funzioni correttamente. - Nick
ty @Nick! Farò un tentativo. - AnneTheAgile


Se si dispone dell'autenticazione basata sull'accesso, utilizzare ssh-copy-id per aggiungere le tue chiavi pubbliche al server remoto.

ssh-copy-id user@host

115
2018-06-01 16:32



Questo non sembra essere un comando valido su Mac, che è quello che è il mio computer client. - Dave Long
Può essere utile phildawson.tumblr.com/post/484798267/ssh-copy-id-in-mac-os-x - Shoaib Nawaz
su OSX puoi installare con brew: brew install ssh-copy-id - phil
Su Macports, questo comando può essere installato usando sudo port install openssh +ssh_copy_id. Il +ssh_copy_id installa openssh con la variante ssh_copy_id. - Stefan Lasiewski
Nota che le istruzioni su phildawson.tumblr.com ti chiedono di installare un software non affidabile, come root. Questo è abbastanza pericoloso e un buon modo per essere hackerato, a meno che tu non sappia che puoi fidarti dell'autore. - Stefan Lasiewski


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

32
2018-06-01 18:23





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.


7
2017-09-07 18:42





Dopo aver salvato la chiave pubblica, dovresti salvare la chiave privata in una directory e 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à. Per me funziona.


3
2018-04-23 19:59



Mi piacerebbe che la console di Windows potesse avere tutte le funzionalità di ssh aggiunte nel suo interprete - Dennis


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, vuoi 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.

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#how-to-generate-your-own-key-and-import-it-to-aws


3
2018-03-03 01:22





Prendi 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 le loro autorizzazioni e aggiungere la chiave al file. Certo che devi cambiare il KEYGOESHERE parte sotto e il commento dopo.

mkdir -p ~/.ssh && chmod 700 ~/.ssh && touch ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys && echo "ssh-rsa KEYGOESHERE user@remotehost or note" >> ~/.ssh/authorized_keys

1
2017-12-07 20:33