Usi scp per copiare un file nell'istanza di Amazon EC2?


198

Sto cercando di utilizzare il mio Mac Terminal per scpare un file da Download (phpMyAdmin che ho scaricato online) nella mia istanza di Amazon EC2.

Il comando che ho usato era:

scp -i myAmazonKey.pem phpMyAdmin-3.4.5-all-languages.tar.gz  hk22@mec2-50-17-16-67.compute-1.amazonaws.com:~/.

Errore visualizzato: Avviso: file di identità myAmazonKey.pem non accessibile: nessun file o directory. Autorizzazione negata (chiave pubblica). Connessione persa

Sia myAmazonkey.pem che phpMyAdmin-3.4.5-all-languages.tar.gz sono in Download, quindi ho provato

scp -i /Users/Hello_Kitty22/Downloads/myAmazonKey.pem /Users/Hello_Kitty22/Downloads/phpMyAdmin-3.4.5-all-languages.tar.gz  hk22@mec2-50-17-16-67.compute-1.amazonaws.com:~/.

e l'errore che ho ricevuto: Avviso: file di identità /User/Hello_Kitty22/Downloads/myAmazonkey.pem non accessibile: nessun file o directory. Autorizzazione negata (chiave pubblica). Connessione persa

Qualcuno può dirmi come risolvere il mio problema?

ps c'è un post simile: scp (copia sicura) all'istanza ec2 senza password ma non risponde alla mia domanda.


Mi sento come quando avvio la mia istanza di Amazon online, non riesco più ad accedere ai miei file locali in Download
HoKy22

Risposte:


376

Prova a specificare l'utente che deve essere ec2-user, ad es

scp -i myAmazonKey.pem phpMyAdmin-3.4.5-all-languages.tar.gz ec2-user@mec2-50-17-16-67.compute-1.amazonaws.com:~/.

Vedere Connessione a istanze Linux / UNIX tramite SSH .


16
funziona alla grande. Si noti che l'utente predefinito dell'utente potrebbe essere "ubuntu" se si esegue un'istanza di Ubuntu.
RussellStewart,

ovviamente la copia su / potrebbe non funzionare. Grazie per l'illuminazione!
dnuske,

@DanielDropik Non so se stai scherzando o no ... ma :/proverei a copiare la cartella nella radice del sistema, che darebbe errori di autorizzazione su tutte le macchine senza eseguire sudo (o come root).
Dobz,

perché dice Effettuare il login come utente "ubuntu" anziché come utente "root". cosa devo fare per la copia
Arjun,

nel mio caso stavo usando l'utente ma, la differenza aggiungo il pubblico dns mec2-50-17-16-67.compute-1.amazonaws.com invece di un nome di dominio
shareef

31

la seconda directory è la destinazione target, non usare il nome del server lì. In altre parole, non è necessario menzionare il nome della macchina per la macchina in cui ci si trova attualmente.

scp -i /path/to/your/.pemkey -r /copy/from/path user@server:/copy/to/path

-r se è una directory.


19

La chiave non deve essere visualizzabile pubblicamente affinché SSH funzioni. Utilizzare questo comando se necessario:

chmod 400 yourPublicKeyFile.pem

Mi hai salvato il fratellino
Mayukh Sarkar il

13

Dovresti essere sul tuo computer locale per provare il comando scp sopra.

Sul tuo computer locale prova:

scp -i ~/Downloads/myAmazonKey.pem ~/Downloads/phpMyAdmin-3.4.5-all-languages.tar.gz  hk22@mec2-50-17-16-67.compute-1.amazonaws.com:~/.

9

Ecco i dettagli di ciò che funziona per un'istanza EC2 :

scp -i /path/to/whatever.pem /users/me/path-to-file ec2-user@ec2-55-55-555-555.compute-1.amazonaws.com:~

Poche note per iniziare:

  1. Nota gli spazi tra i tre parametri indicati dopo il -i
  2. scpsta per protocollo di copia sicura. Conoscere le parole rende più facile ricordare il comando.
  3. -iimpone che sia necessario fornire il .pemfile come parametro successivo. In caso -icontrario, non è necessario a .pem.
  4. Nota :~alla fine della destinazione per l'istanza EC2.

7

Ho avuto esattamente lo stesso problema, la mia soluzione era

scp -i /path/pem -r /path/file/ ec2-user@public aws dns name: (lascialo vuoto qui)

una volta terminata questa parte, entra nel server ssh e nel file mv nella posizione desiderata


5
scp -i ~/path to pem file/file.pem -r(for directory) /PATH OF LOCAL/localfile user@hostname:PATH OF SERVER/serverdirectory

3

Sotto il formato SCP funziona per me

scp -i /path/my-key-pair.pem ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com:~/SampleFile.txt ~/SampleFile2.txt

SampleFile.txt : sarà il percorso dalla directory principale (nel mio caso, / home / ubuntu). nel mio caso il file che volevo scaricare era in / var / www

SampleFile2.txt : sarà il percorso del percorso principale della tua macchina (Nel mio caso, / home / MyPCUserName)

Quindi, devo scrivere sotto il comando

scp -i /path/my-key-pair.pem ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com:~/../../var/www/Filename.zip ~/Downloads

2

Invia file da locale al server:

scp -i .ssh / awsinstance.pem my_local_file ubuntu@XX.XXX.XXX.XXX: / home / ubuntu

Scarica il file dal server al locale:

scp -i .ssh / awsinstance.pem ubuntu@XX.XXX.XXX.XXX: / home / ubuntu / server_file.


1

Il processo di utilizzo di SCP per copiare i file da un computer locale a un'istanza di AWS EC2 Linux è trattato passo per passo (compresi i punti menzionati di seguito) in questo video .

Per correggere questo particolare problema con l'utilizzo di SCP:

  1. Devi specificare l'utente Linux corretto. Da Amazon :

    • Per Amazon Linux, il nome utente è ec2-user.
    • Per RHEL, il nome utente è ec2-user o root.
    • Per Ubuntu, il nome utente è ubuntu o root.
    • Per Centos, il nome utente è centos.
    • Per Fedora, il nome utente è ec2-user.
    • Per SUSE, il nome utente è ec2-user o root.
    • Altrimenti, se l'utente ec2 e root non funzionano, consultare il proprio provider AMI.
  2. La tua chiave privata non deve essere visibile pubblicamente. Eseguire il comando seguente in modo che solo l'utente root possa leggere il file.

    chmod 400 /path/to/yourKeyFile.pem
    

0

Controlla le autorizzazioni sul file .pem ... openssh di solito non ama le chiavi private leggibili dal mondo e fallirà (iir, scp non fa un ottimo lavoro nel fornire questo feedback all'utente).

Puoi semplicemente ssh con quella chiave per il tuo host AWS?


Sì, posso usare ssh con quella chiave per il mio host AWS. In effetti, il problema che sto riscontrando è che sono sull'host Amazon (tramite ssh), quindi quando faccio cd, riesco a vedere solo i file sul mio server Amazon, non la mia directory Mac Download locale dove ho salvato il mio file pem . Posso solo eseguire il cd nella directory Download Mac locale quando esco dal mio host ec2. Ma se esco sul mio host ec2, non potrei caricare il file phpMyAdmin sul mio server ec2. Il permesso del mio pem è 400, penso che vada bene.
HoKy22,

2
Grazie mille per l'aiuto, ho trovato il mio problema dall'ultima domanda che hai posto. Sembra che posso sia ssh che scp, non due insieme.
HoKy22,

grazie per il suggerimento hellokitty22. Avevo due terminali aperti uno per ssh e uno anche per scp.
donebizkit,

0

Innanzitutto è necessario modificare la modalità del .pemfile dalla modalità di lettura e scrittura alla modalità di sola lettura. Questo può essere fatto semplicemente con un singolo comando nel terminalesudo chmod 400 your_public_key.pem


0

Ho provato tutti i suggerimenti sopra menzionati e niente ha funzionato. Ho terminato l'istanza corrente, ne ho lanciata un'altra e ho ripetuto lo stesso esatto processo. Questa volta nessun problema. A volte potrebbe essere colpa dell'ami remoto.


0

Questo ha funzionato per me. Ho usato una combinazione di altre due risposte a questa domanda.

scp -i /Users/me/documents/myKP.pem -r /Users/me/desktop/testDir \
       ec2-user@ec2-11-111-11-11.compute-1.amazonaws.com:/home/ec2-user/remoteDir

"Ec2-user@ec2-11-111-11-11.compute-1.amazonaws.com" viene copiato e incollato dal DNS pubblico dell'istanza ec2.


-1

Io userei:

scp -i "path to .pem file" "file to be copeide from local machine" username@amazoninstance: 'destination folder to copy file on remote machine'

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.