2013-04-05 19 views
28

Ho un'istanza EC2 in esecuzione e sono in grado di collegarlo a SSH.Istanza da Rsync ad Amazon Ec2

Tuttavia, quando provo a rsync, mi dà l'errore Autorizzazione negata (chiave pubblica).

Il comando che sto utilizzando è:

rsync -avL --progress -e ssh -i ~/mykeypair.pem ~/Sites/my_site/* [email protected]:/var/www/html/ 

Ho anche provato

rsync -avz ~/Sites/mysite/* -e "ssh -i ~/.ssh/id_rsa.pub" [email protected]:/var/www/html/ 

Grazie,

+0

Come si inserisce SSH? –

+0

La tua seconda versione ha quasi sempre ragione, tranne che stai usando la chiave sbagliata. Potrebbe anche essere necessario spostare il percorso sorgente dopo il comando ssh. – datasage

risposta

48

Ho appena ricevuto lo stesso errore. Ero stato costantemente in grado di ssh con:

ssh -i ~/path/mykeypair.pem \ 
[email protected] 

Ma quando si utilizza il più rsync costruzione, sembrava di provocare errori. Ho finito per racchiudere l'affermazione ssh tra virgolette e utilizzare il percorso completo della chiave. Nel tuo esempio:

rsync -avL --progress -e "ssh -i /path/to/mykeypair.pem" \ 
     ~/Sites/my_site/* \ 
     [email protected]:/var/www/html/ 

Questo sembrava fare il trucco.

+0

se hai problemi con la verbosità del cmd puoi provare a [aws-upload] (https://github.com/borracciaBlu/aws-upload). – borracciaBlu

10

Dopo aver sofferto un po ', credo che questo aiuterà:

Sto usando il seguente comando e ha funzionato senza problemi:

rsync -av --progress -e ssh /folder1/folder2/* [email protected]:/folder1/folder2 

Prima considerazione:

Usa il --rsync-path

Preferisco in uno script di shell:

#!/bin/bash 

RSYNC = /usr/bin/rsync 

$RSYNC [options] [source] [destination] 

Seconda considerazione:

Creare una chiave pubblica con il comando di seguito per la comunicazione tra i server in questione. Non sarà la stessa fornita da Amazon.

ssh-keygen -t rsa 

Non dimenticare di attivare l'autorizzazione sul server di destinazione in/etc/ssh/sshd_config (Ubuntu e CENTOS).

Sync files from one EC2 instance to another

http://ask-leo.com/how_can_i_automate_an_sftp_transfer_between_two_servers.html

Usa -v opzione per errori verbose e meglio identificare.

terza considerazione

Se entrambi i server sono in EC2 fare un vincolo da gruppo di protezione

Nel gruppo di protezione server di destinazione:

in entrata: porta Source/TCP 22/IP Sicurezza (o nome gruppo) del server di origine

+0

sì, questo ha funzionato anche per me –

+0

grazie per aver fornito la seconda soluzione. sei un salvatore! il sito ask-leo è una buona risorsa per coloro che cercano di spostare file tra 2 server – zock

7

Di seguito è riportato ciò che ho utilizzato e ha funzionato. La fonte era ec2 e l'obiettivo era la macchina di casa.

sudo rsync -azvv -e "ssh -i /home/ubuntu/key-to-ec2.pem" [email protected]:/home/ec2-user/source/ /home/ubuntu/target/ 
1

questo ha funzionato per me:

nohup rsync -zravu --partial --progress -e "ssh -i xxxx.pem" [email protected]:/mnt/data /mnt2/ & 
0

Per riassumere sopra risponde

copia dei file dalla macchina locale al server

rsync -avz -e "ssh -i /path/to/key.pem" /path/to/file.txt <username>@<ip/domain>:/path/to/directory/ 

copia del file dal server al computer locale

rsync -avz -e "ssh -i /path/to/key.pem" <username>@<ip/domain>:/path/to/directory/file.txt /path/to/directory/