2013-04-05 14 views
28

Mam instancję EC2 działającą i jestem w stanie włączyć do niej SSH.Rsync do instancji Amazon Ec2

Jednak, gdy próbuję rsync, daje mi błąd Odmowa uprawnień (publickey).

Polecenie używam to:

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

Próbowałem też

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

Dzięki,

+0

Jak się do tego używasz? –

+0

Twoja druga wersja jest w większości poprawna, z wyjątkiem tego, że używasz niewłaściwego klucza. Może być również konieczne przesunięcie ścieżki źródłowej po komendzie ssh. – datasage

Odpowiedz

48

Właśnie otrzymałem ten sam błąd. Byłem w stanie konsekwentnie ssh z:

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

Ale podczas korzystania z dłuższego rsync budowę, wydawało się to powodować błędy. Skończyłem na tym, że zawarłem instrukcję ssh w cytatach i używając pełnej ścieżki do klucza. W twoim przykładzie:

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

To chyba załatwiło sprawę.

+0

jeśli masz problemy z gadatliwością cmd, możesz spróbować [aws-upload] (https://github.com/borracciaBlu/aws-upload). – borracciaBlu

10

Po cierpi trochę, wierzę, że to pomoże:

używam komendy poniżej i to działa bez problemów:

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

Pierwsza uwaga:

Użyj -rsync-path

Preferuję w skrypcie powłoki:

#!/bin/bash 

RSYNC = /usr/bin/rsync 

$RSYNC [options] [source] [destination] 

drugie rozpatrzenie:

Tworzenie klucza Publick komendą poniżej komunikacji między serwerami w pytaniu. Ona nie będzie taka jak dostarczona przez Amazon.

ssh-keygen -t rsa 

Nie zapomnij włączyć zgodę na serwerze docelowym w pliku/etc/ssh/sshd_config (Ubuntu i CENTOS).

Sync files from one EC2 instance to another

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

Użyj opcji -v opcja za błędy gadatliwym i lepiej identyfikować.

trzecie Rozpatrzenie

Jeśli oba serwery są na EC2 dokonać powściągliwość przez grupy zabezpieczeń

w grupie zabezpieczeń serwera docelowego:

przychodzących: port Źródło/TCP 22/IP Bezpieczeństwo (lub nazwa grupy) serwera źródłowego

+0

tak to zadziałało również dla mnie –

+0

dzięki za dostarczenie drugiego rozwiązania. jesteś zbawicielem! strona ask-leo jest dobrym źródłem dla osób próbujących przenosić pliki między 2 serwerami – zock

7

Poniżej przedstawiłem, czego użyłem i zadziałało. Źródłem było ec2, a celem była maszyna domowa.

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

Ten pracował dla mnie:

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

Podsumowując powyższe odpowiedzi

kopiowania plików z komputera lokalnego do serwera

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

plik kopii z serwera do lokalnego komputera

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