risposta-alla-domanda-sullo-sviluppo-web-bd.com

Cercando su SSH in un'istanza di Amazon Ec2 - errore di autorizzazione

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
628
Matt Roberts

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

1229
Kof

Probabilmente stai usando il nome utente sbagliato per accedere:

  • la maggior parte delle immagini di Ubuntu ha un utente ubuntu
  • L'AMI di Amazon è ec2-user
  • la maggior parte delle immagini Debian ha root o admin

Per accedere, è necessario regolare il comando ssh:

ssh -l USERNAME_HERE -i .ssh/yourkey.pem public-ec2-Host

HTH

251
Till

So che questo è very late al gioco ... ma questo always funziona per me:

passo 1

ssh-add ~/.ssh/KEY_PAIR_NAME.pem

passo 2, semplicemente ssh in :)

ssh [email protected]<instance public dns/ip>

per esempio.

ssh [email protected]

spero che questo aiuti qualcuno.

56
user2838357

Ok amico, l'unica cosa che ha funzionato per me è stata:

  1. Cambia i permessi della chiave

    chmod 400 mykey.pem

  2. 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]

37
bobobobo

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

27
renick

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

14
Ayush Goyal

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.

7

Nel terminale Mac, fare "chmod 400 xyz.pem" non mi ha aiutato, continuava a dire il permesso negato. Per gli utenti di Ubuntu suggerirei

  1. ssh-add xyz.pem
  2. ssh -i xyz.pem [email protected] (nota che l'utente è ubuntu)
6

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
  ___|\___|___|
6
Ricardo Cid

Chiavi SSH e best practice per l'autorizzazione dei file:

  • directory .ssh - 0700 (solo dal proprietario)
  • chiave privata/file .pem - 0400 (leggi solo dal proprietario)
  • chiave pubblica/file .pub - 0600 (leggi e scrivi solo dal proprietario)

    chmod XXXX file/directory

4
Ryan

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.

3
Syed Priom

Accesso alternativo tramite PuTTY. È buono ma necessita di alcuni passaggi.

  1. Ottieni il tuo .pem che è stato generato quando hai creato per la prima volta l'istanza EC2.
  2. Convertire il file .pem .ppk usando PuttyGen poiché PuTTY non legge .pem.
  3. Apri PuTTY e inserisci il tuo Nome host che è il tuo nome utente di istanza + DNS pubblico (ad esempio [email protected]). Non il nome utente del tuo account AWS.
  4. Quindi vai su Connessione> SSH> Auth . Quindi aggiungi il tuo .ppk file. Fare clic su Sfoglia dove dice "File chiave privata per l'autenticazione".
  5. Fai clic su Apri e dovresti essere in grado di stabilire immediatamente la connessione.

Sto usando PuTTY 0.66 in Windows.

3
jarvis

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.

2
Rishabh Agrahari

Ci possono essere tre ragioni dietro questo errore.

  1. Stai usando una chiave sbagliata.
  2. La tua chiave non ha le autorizzazioni corrette. Devi chmodarlo a 400.
  3. Stai usando l'utente sbagliato. Le immagini di Ubuntu hanno un utente ubuntu , AMI di Amazon è ec2-user e le immagini di debian hanno root o admin
2
Jagatveer Singh

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

2
sathee005

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]

1
singh30

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>>
1
Prash

In aggiunta alle altre risposte, ecco cosa ho fatto affinché questo funzioni:

  • Copia la chiave nella cartella .ssh se ancora non avessi:

cp key.pem ~/.ssh/key.pem

  • Dare le autorizzazioni appropriate alla chiave

chmod 400 ~/.ssh/key.pem

eval `ssh-agent -s` ssh-add

  • Quindi, aggiungi la chiave

ssh-add ~/.ssh/key.pem

Ora dovresti essere in grado di ssh EC2 (:

1
Rodrigo Nantes

Elenco di controllo:

  1. Stai usando il file .pem della chiave privata corretta?

  2. 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.)

  3. 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"

1
fivedogit

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]

1
rahul kumar

Bene, guardando la descrizione del tuo post, sento che ci sono stati 2 errori da te:

  1. Imposta le autorizzazioni corrette per la chiave privata . Sotto il comando dovrebbe aiutare a impostare la permissione dei file corretta.

    chmod 0600 mykey.pem

  2. 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

1

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
0
BigData-Guru

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.

0
Ajai

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}

0
Abhijit Barua

È 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.

0
Deepak N

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ì.

0
Nick Res