EC2インスタンスを実行していて、そこにSSHで接続できます。
ただし、rsyncを試みると、「Permission denied(publickey)」というエラーが表示されます。
私が使用しているコマンドは次のとおりです。
rsync -avL --progress -e ssh -i ~/mykeypair.pem ~/Sites/my_site/* [email protected]:/var/www/html/
私も試しました
rsync -avz ~/Sites/mysite/* -e "ssh -i ~/.ssh/id_rsa.pub" [email protected]:/var/www/html/
おかげで、
同じエラーが表示されました。私は一貫してsshすることができました:
ssh -i ~/path/mykeypair.pem \
[email protected]
しかし、より長いrsync構造を使用すると、エラーが発生するように見えました。 sshステートメントを引用符で囲み、キーへのフルパスを使用することになりました。あなたの例では:
rsync -avL --progress -e "ssh -i /path/to/mykeypair.pem" \
~/Sites/my_site/* \
[email protected]:/var/www/html/
それはトリックを行うようでした。
少し苦しんだ後、私はこれが助けになると信じています:
私は以下のコマンドを使用していますが、問題なく機能しています:
rsync -av --progress -e ssh /folder1/folder2/* [email protected]:/folder1/folder2
最初の考慮事項:
--rsync-pathを使用します
私はシェルスクリプトで好む:
#!/bin/bash
RSYNC = /usr/bin/rsync
$RSYNC [options] [source] [destination]
2番目の考慮事項:
問題のサーバー間の通信用に、以下のコマンドで公開キーを作成します。彼女はアマゾンが提供するものとは異なります。
ssh-keygen -t rsa
/ etc/ssh/sshd_config(UBUNTUおよびCENTOS)のターゲットサーバーで許可を有効にすることを忘れないでください。
http://ask-leo.com/how_can_i_automate_an_sftp_transfer_between_two_servers.html
-vオプションを使用して、エラーを詳細に識別します。
第三の考慮事項
両方のサーバーがEC2上にある場合、セキュリティグループによる制限を行います
セキュリティグループサーバーの宛先:
インバウンド:ソース/ TCPポート22 /ソースサーバーのIPセキュリティ(またはグループ名)
以下は私が使用したものであり、うまくいきました。ソースはec2で、ターゲットはホームマシンでした。
Sudo rsync -azvv -e "ssh -i /home/ubuntu/key-to-ec2.pem" [email protected]:/home/ec2-user/source/ /home/ubuntu/target/
ローカルマシンからサーバーにファイルをコピーする
rsync -avz -e "ssh -i /path/to/key.pem" /path/to/file.txt <username>@<ip/domain>:/path/to/directory/
サーバーからローカルマシンにファイルをコピーする
rsync -avz -e "ssh -i /path/to/key.pem" <username>@<ip/domain>:/path/to/directory/file.txt /path/to/directory/
これは私のために働いた:
Nohup rsync -zravu --partial --progress -e "ssh -i xxxx.pem" [email protected]:/mnt/data /mnt2/ &