Qual è l'autorizzazione corretta per un file .pem su SSH e SCP


69

Ho provato a SSH nel mio server AWS Ubuntu e a copiare la directory sul mio computer locale. Durante tutto il processo ho riscontrato diversi errori di autorizzazione dei file (indicati di seguito).

È necessario un permesso specifico per il file .pem che mi permetta di SSH e SCP?
O devo cambiare l'autorizzazione del file due volte, una volta per SSH e un'altra per SCP dopo il login?

Ecco i comandi che sto usando:

SSH:

ssh -i sentiment.pem Todo@54.555.555.555

Copia da remoto a computer locale con:

scp Todo@54.555.555.555:/home/ubuntu/sentimentfolder /Users/Toga/Desktop/sentimentlocal

Sono su un Mac OS X 10.7.5.


Prova ed errore:

1.) Dopo aver inizialmente scaricato il file .pem, le sue autorizzazioni erano impostate su, PENSO: 0644

-rw-r - r - @ 1 Toga staff 1692 feb 18 21:27 sentiment.pem

Ho quindi provato a SSH tramite terminale e ho ricevuto quanto segue:

WARNING: UNPROTECTED PRIVATE KEY FILE! 
Permissions 0644 for 'sentiment.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: sentiment.pem
Permission denied (publickey).

2.) Ho aggiornato i permessi dei file su: chmod 660 sentiment.pem

Dopo l'aggiornamento, le autorizzazioni sono state impostate su:

-rw-rw ---- @ 1 Toga staff 1692 feb 18 21:27 sentiment.pem

Ho quindi provato a SSH tramite terminale e ho ricevuto quanto segue:

WARNING: UNPROTECTED PRIVATE KEY FILE! 
Permissions 0660 for 'sentiment.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: sentiment.pem
Permission denied (publickey).

3.) Ho aggiornato i permessi dei file su: chmod 600 sentiment.pem

Dopo l'aggiornamento, le autorizzazioni sono state impostate su:

-rw ------- @ 1 personale Toga 1692 18 febbraio 21:27 sentiment.pem

Ho quindi provato a SSH tramite terminale e ho avuto successo !!

4.) Ora connesso, eseguo il comando a per copiare la directory remota sul mio computer locale con:

scp Todo@54.555.555.555:/home/ubuntu/sentimentfolder /Users/Toga/Desktop/sentimentlocal

Che ritorna:

Permission denied (publickey).

Tentativi di comando SCP:

1.) aggiunto il comando -i e fatto riferimento al file .pem:

scp -i sentiment.pem Todo@54.555.555.555: / home / ubuntu / sentimentfolder / Users / Toga / Desktop / sentimentlocal

2.) aggiunto il comando -i, fatto riferimento al file .pem e modificato l'utente per AWS in ec2-user:

scp -i sentiment.pem ec2-user@54.555.555.555: / home / ubuntu / sentimentfolder / Users / Toga / Desktop / sentimentlocal

3.) ha aggiunto il comando -i, fatto riferimento al filem .pem, ha cambiato l'utente per AWS in ec2-user e ha aggiunto il percorso completo del file per l'ubicazione del file .pem:

scp -i /Users/Toga/Desktop/rollup/Personal/Serial_Project_Starter/sentiment/sentiment.pem ec2-user@54.555.555.555: / home / ubuntu / sentiment / Users / Toga / Desktop / sentimentlocal


Devi dire a scp di usare anche il file .pem
daniel kullmann

grazie per averlo chiamato @danielkullmann che abbia un senso. Ho provato una combinazione di comandi che fa riferimento direttamente al file .pem ma non ha ancora funzionato. Ho aggiornato la domanda con una sezione intitolata "Tentativi di comandi SCP" per catalogare ciò che ho provato. Se hai un comando alternativo, per favore fatemelo sapere. Grazie.
George Jester,

Risposte:


110

Visita qui Come connettersi ad Amazon EC2 in remoto tramite SSH o fare riferimento di seguito.

Come connettersi ad Amazon EC2 in remoto tramite SSH:

  1. Scarica il file .pem.
  2. In Amazon Dashboard scegli "Istanze" dalla barra laterale sinistra, quindi seleziona l'istanza a cui desideri connetterti.
  3. Fai clic su "Azioni", quindi seleziona "Connetti"
  4. Fai clic su "Connetti con un client SSH autonomo"
  5. Apri una finestra Terminale
  6. Crea una directory:

    # mkdir -p ~/.ssh
    
  7. Spostare il file .pem scaricato nella directory .ssh che abbiamo appena creato:

    # mv ~/Downloads/ec2private.pem ~/.ssh
    
  8. Modifica le autorizzazioni del file .pem in modo che solo l'utente root possa leggerlo:

    # chmod 400 ~/.ssh/ec2private.pem
    
  9. Crea un file di configurazione:

    # vim ~/.ssh/config
    

    Immettere il testo seguente nel file di configurazione:

    Host *amazonaws.com
    IdentityFile ~/.ssh/ec2private.pem
    User ec2-user
    

    Salva quel file.

  10. Utilizzare il comando ssh con il nome host DNS pubblico per connettersi all'istanza.
    per esempio:

    # ssh ec2-54-23-23-23-34.example.amazonaws.com
    

1
Sono curioso: perché il downvote?
Erik,

1
NON ho votato per difetto. Questo in realtà sembra utile, non sono sicuro se risolverà il problema per quando ho bisogno di passare dal telecomando al mio computer locale. Proverò questo e vedrò cosa succede. Grazie Babin.
George Jester,

Quando si copia un'intera directory e il suo contenuto utilizzare scp -r.
bahamat,

1
Risposta eccellente. Per evitare di spostare il pem in giro, puoi usare il flag ssh -i per specificare la chiave pubblica da usare. es: ssh -i path / to / ec2private.pem ec2-54-23-23-23-34.example.amazonaws.com
Mafro34

15

chmod 400 {keyfile}.pem è ciò che Amazon ha istruito e funziona.


Questa è la risposta che stavo cercando, tutte le istruzioni nella risposta accettata sono buone pratiche ... ma irrilevanti per il problema.
sarink,

3

Sembra che non si debba usare l'indirizzo IP, ma il nome host completo del sistema nel comando SCP. I documenti AWS lo descrivono su http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html nella sezione "Trasferimento di file su istanze Linux / Unix da Linux / Unix con SCP".

E usare -rper copiare directory.

E nota che il nome utente predefinito è diverso per le diverse immagini:

Per Amazon Linux, il nome utente predefinito è ec2-user. Per RHEL5, il nome utente è spesso rootma potrebbe essere ec2-user. Per Ubuntu, il nome utente è ubuntu. Per SUSE Linux, il nome utente è root. Altrimenti, consultare il proprio provider AMI.

Quindi, usa questo comando:

scp -r -i  /Users/Toga/Desktop/rollup/Personal/Serial_Project_Starter/sentiment/sentiment.pem ubuntu@ec2-xx-xx-xx-xx.compute-x.amazonaws.com:~/sentiment /Users/Toga/Desktop/sentimentlocal

1
Un buon promemoria per me per usare il nome utente corretto. Ottieni l'errore sopra e ho bisogno di ricordare di usare l'utente Ubuntu su istanze Ubuntu.
md_rasler

2

"Autorizzazione negata (chiave pubblica)" proviene dal server remoto, quindi stai utilizzando la chiave sbagliata, non è consentito connettersi o è presente un errore di battitura nel file remote enabled_keys.


2
chmod 0400 pemfile.pem

e

ssh -i path_to_pem_file -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ec2-machine name

3
Spiegare il sshcomando (e fornire anche un riferimento, se possibile). A proposito, è chmod 400stato fornito una risposta nove mesi fa.
Scott,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.