Questa è probabilmente una domanda stupidamente semplice per alcuni :)
Ho creato una nuova istanza linux su Amazon EC2 e, come parte di ciò, ho scaricato il file .pem per consentirmi di accedere a SSH.
Quando ho provato a ssh con:
ssh -i myfile.pem <public dns>
Ho ottenuto:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'amazonec2.pem' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: amazonec2.pem
Permission denied (publickey).
Seguendo questo post Ho provato a chmod +600 il file pem, ma ora quando ho ssh ottengo solo:
Permission denied (publickey).
Che errore ragazzo-scuola sto facendo qui? Il file .pem si trova nella mia cartella home (in osx). Le autorizzazioni sono come questa:
[email protected] 1 mattroberts staff 1696 19 Nov 11:20 amazonec2.pem
Il problema sta avendo mod errato sul file.
Risolto facilmente eseguendo -
chmod 400 mykey.pem
Tratto dalle istruzioni di Amazon -
Il tuo file chiave non deve essere pubblicamente visibile affinché SSH funzioni. Utilizzare questo comando se necessario: chmod 400 mykey.pem
Probabilmente stai usando il nome utente sbagliato per accedere:
ubuntu
ec2-user
root
o admin
Per accedere, è necessario regolare il comando ssh:
ssh -l USERNAME_HERE -i .ssh/yourkey.pem public-ec2-Host
HTH
So che questo è very late al gioco ... ma questo always funziona per me:
ssh-add ~/.ssh/KEY_PAIR_NAME.pem
ssh [email protected]<instance public dns/ip>
per esempio.
ssh [email protected]
spero che questo aiuti qualcuno.
Ok amico, l'unica cosa che ha funzionato per me è stata:
Cambia i permessi della chiave
chmod 400 mykey.pem
Assicurarsi di accedere utilizzando ec2-user , e l'indirizzo ec2-99 corretto .... L'indirizzo ec2-99 si trova nella parte inferiore della console di aws quando si effettua l'accesso e si visualizza l'istanza elencata
ssh -i mykey.pem [email protected]
Dai un'occhiata a questo articolo . Non si usa il DNS pubblico ma piuttosto il modulo
ssh -i your.pem [email protected]
dove il nome è visibile sul tuo pannello AMI
Modifica autorizzazione per il file chiave con:
chmod 400 key-file-name.pem
Vedi la documentazione di AWS per la connessione all'istanza:
http://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html#EC2_ConnectToInstance_Linux
In Windows è possibile accedere alle proprietà del file pem e andare alla scheda di sicurezza, quindi al pulsante di avanzamento.
rimuovere l'ereditarietà e tutte le autorizzazioni. quindi concediti il pieno controllo. dopo tutto, SSL non ti darà di nuovo lo stesso errore.
Nel terminale Mac, fare "chmod 400 xyz.pem" non mi ha aiutato, continuava a dire il permesso negato. Per gli utenti di Ubuntu suggerirei
ssh-add xyz.pem
ssh -i xyz.pem [email protected]
(nota che l'utente è ubuntu)So che a questa domanda è già stata data una risposta, ma per coloro che li hanno provati tutti e si sta ancora ottenendo il fastidioso "Autorizzazione negata (chiave pubblica)". Prova a eseguire il comando con Sudo. Ovviamente questa è una soluzione temporanea e dovresti impostare le autorizzazioni correttamente ma almeno questo ti permetterà di identificare che il tuo attuale utente non è in esecuzione con i privilegi di cui hai bisogno (come hai ipotizzato)
Sudo ssh -i amazonec2.pem ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com
Una volta fatto questo riceverai un messaggio come questo:
Please login as the user "ec2-user" rather than the user "root"
Che è anche scarsamente documentato. In tal caso, fai questo:
Sudo ssh -i amazonec2.pem ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com -l ec2-user
E avrai il glorioso:
__| __|_ )
_| ( / Amazon Linux AMI
___|\___|___|
Chiavi SSH e best practice per l'autorizzazione dei file:
chiave pubblica/file .pub - 0600 (leggi e scrivi solo dal proprietario)
chmod XXXX file/directory
ssh -i /.pem user @ Host-machine-IP
Penso che sia perché hai inserito le credenziali sbagliate o, stai usando una chiave pubblica piuttosto che una chiave privata o, le tue autorizzazioni di porta sono aperte per TUTTI su ssh. Questo è male per Amazon.
Accesso alternativo tramite PuTTY. È buono ma necessita di alcuni passaggi.
Sto usando PuTTY 0.66 in Windows.
Il problema per me era che il mio file .pem era in una delle mie partizioni NTFS. L'ho spostato nella mia partizione linux (ext4).
Hai richiesto i permessi eseguendo:
chmod 400 my_file.pem
E ha funzionato.
Ci possono essere tre ragioni dietro questo errore.
Fai un chmod 400 yourkeyfile.pem Se la tua istanza è Amazon linux, usa ssh -i yourkeyfile.pem ec2-user @ ip per ubuntu ssh -i yourkeyfile.pem ubuntu @ ip per centos ssh -i yourkeyfile.pem centos @ ip
Il file chiave non dovrebbe essere pubblicamente visibile, quindi usa l'autorizzazione 400
chmod 400 keyfile.pem
Se il comando precedente mostra l'errore di autorizzazione, utilizzare
Sudo chmod 400 keyfile.pem
Ora ssh nella macchina ec2, se il problema persiste, utilizzare ec2-user
ssh -i keyfile.pem [email protected]
Basta cambiare il permesso del file pem a 0600 consentendo solo l'utente consentito e funzionerà come fascino.
Sudo chmod 0600 myfile.pem
E poi prova a ssh funzionerà perfettamente.
ssh -i myfile.pem <<ssh_user>>@<<server>>
In aggiunta alle altre risposte, ecco cosa ho fatto affinché questo funzioni:
cp key.pem ~/.ssh/key.pem
chmod 400 ~/.ssh/key.pem
eval `ssh-agent -s` ssh-add
ssh-add ~/.ssh/key.pem
Ora dovresti essere in grado di ssh EC2 (:
Elenco di controllo:
Stai usando il file .pem della chiave privata corretta?
Le sue autorizzazioni sono impostate correttamente? (Le mie AMI di marca Amazon funzionano con 644, ma Red Hat deve essere almeno 600 o 400. Non so su Ubuntu.)
Stai usando il nome utente giusto nella tua linea ssh? Amazon-branded = "ec2-user", Red Hat = "root", Ubuntu = "ubuntu". L'utente può essere specificato come "ssh -i pem usename @ hostname" OR "ssh -l username -i pem hostname"
L'autorizzazione predefinita BY non consente la chiave PEM. Devi solo cambiare il permesso:
chmod 400 xyz.pem
e se l'istanza di ubuntu si connette usando:
ssh -i xyz.pem [email protected]
Bene, guardando la descrizione del tuo post, sento che ci sono stati 2 errori da te:
Imposta le autorizzazioni corrette per la chiave privata . Sotto il comando dovrebbe aiutare a impostare la permissione dei file corretta.
chmod 0600 mykey.pem
Utente ec2 errato che stai cercando di accedere .
Guardando il tuo log di debug penso che hai generato un'istanza di Amazon Linux. L'utente predefinito per quel tipo di istanza è ec2-user
. Se l'istanza fosse stata ubuntu, il tuo utente predefinito sarebbe stato ubuntu
.
ssh -i privatekey.pem [email protected]_ip
Note: For an Amazon Linux AMI, the default user name is ec2-user. For a Centos AMI, the default user name is centos. For a Debian AMI, the default user name is admin or root. For a Fedora AMI, the default user name is ec2-user or Fedora. For a RHEL AMI, the default user name is ec2-user or root. For a SUSE AMI, the default user name is ec2-user or root. For an Ubuntu AMI, the default user name is ubuntu. Otherwise, if ec2-user and root don't work, check with the AMI provider.
fonte: https://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html
La chiave non deve essere pubblicamente visibile affinché SSH funzioni. Usa questo comando se necessario:
chmod 400 Interview-apps.pem
Connect to your instance using its Public DNS:
ec2-**-***-***-***.us-west-2.compute.amazonaws.com
Esempio:
ssh -i "Interview-apps.pem" [email protected]**-***-***-***.us-west-2.compute.amazonaws.com
Di seguito sono riportati i semplici passaggi per l'utente Linux per connettersi con il server utilizzando il file .pem:
Passaggio 1: al percorso del file pem e copiarlo nella posizione home .ssh.
cp example.pem ~/.ssh/example.pem
Passaggio 2: modifica l'autorizzazione
chmod 400 ~/.ssh/example.pem
Passaggio 3: eseguire il seguente comando
ssh -i ~/.ssh/example.pem [email protected]
Poiché questo comando è troppo lungo, è necessario creare l'alias di questo utilizzando i seguenti comandi:
vim ~/.bashrc
Scrivi lo stesso comando nel modo seguente alla fine.
alias sshConnect='ssh -i ~/.ssh/example.pem [email protected]'
Ora riavvia il tuo sistema e usa sshConnect
per connetterti al tuo server.
Ho visto due ragioni alla base di questo problema
1) la chiave di accesso non ha il permesso giusto. Le chiavi PEM con autorizzazione predefinita non sono autorizzate a stabilire una connessione sicura. Devi solo cambiare il permesso:
chmod 400 xyz.pem
2) Controlla anche se hai effettuato l'accesso con le credenziali utente corrette. Altrimenti, usa Sudo durante la connessione
Sudo ssh -i {keyfile} ec2-user @ {indirizzo IP dell'host remoto}
È solo un problema di autorizzazione con la chiave aws pem.
Basta cambiare il permesso della chiave pem a 400 usando sotto il comando.
chmod 400 pemkeyname.pem
Se non si dispone dell'autorizzazione per modificare l'autorizzazione di un file, è possibile utilizzare il comando Sudo come sotto.
Sudo chmod 400 pemkeyname.pem
Spero che questo dovrebbe funzionare bene.
Ciò che ha risolto questo problema è stato spostare il file .pem all'interno della directory apps. Quindi dire che fooapp è il nome della mia app. L'ho inserito direttamente lì.