Ho un server Ubuntu su Amazon EC2, che uso 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 sistemare il file, ma quando provo a rimettere il mio file chiave, non funziona. Ottengo ancora il permesso negato dal server sulla mia macchina locale.
authorized_keys
ha i permessi 600. Ho provato ad aggiungere la mia chiave SSH con ssh-rsa e a lasciare ssh-rsa off. Ho anche provato a rendere la chiave SSH tutta una linea, ma anche questo non ha funzionato.
C'è qualcos'altro che devo fare come ricaricare il file in qualche modo?
Non dovreste mai salvare il file con il suo contenuto che inizia con -----BEGIN RSA PRIVATE KEY-----
sul server, quella è la vostra chiave privata. Invece, devi mettere la chiave pubblica nel file ~/.ssh/authorized_keys
.
Questa chiave pubblica ha l'estensione .pub
quando viene generata usando ssh-keygen
e il suo contenuto inizia con ssh-rsa AAAAB3
. (Il formato binario è descritto nelle risposte a questa domanda).
I permessi di ~/.ssh
sul server dovrebbero essere 700. Il file ~/.ssh/authorized_keys
(sul server) dovrebbe avere una modalità di 600. I permessi della chiave (privata) sul lato client dovrebbero essere 600.
Se la chiave privata non era protetta da una password, e l'hai messa sul server, ti consiglio di generarne una nuova:
ssh-keygen -t rsa
Potete saltare questa operazione se siete completamente sicuri che nessuno possa recuperare la chiave privata cancellata dal server.
Se questo non aiuta, eseguire ssh
con opzioni per una maggiore verbosità:
ssh -vvv [email protected]
Sul lato server, puoi esaminare /var/log/auth.log
per i dettagli.
Se hai un'autenticazione basata sul login allora usa ssh-copy-id
per aggiungere le tue chiavi pubbliche al server remoto.
ssh-copy-id user@host