Назад | Перейти на главную страницу

rsync to EC2: файл удостоверений недоступен

Я пытаюсь выполнить синхронизацию файла с моим экземпляром EC2:

 rsync -Paz --rsh "ssh -i ~/.ssh/myfile.pem" --rsync-path "sudo rsync" file.pdf ubuntu@ec2-XXX-XX-XX-X.compute-1.amazonaws.com:/home/ubuntu/

Это дает следующее сообщение об ошибке:

Warning: Identity file ~/.ssh/myfile.pem not accessible: No such file or directory.
ubuntu@ec2-XXX-XX-XX-X.compute-1.amazonaws.com's password: 

Файл pem определенно находится по пути ~/.ssh/myfile.pem, хотя: vi ~/.ssh/myfile.pem показывает мне файл.

Если я удалю удаленный путь с самого конца команды rsync:

rsync -Paz --rsh "ssh -i ~/.ssh/myfile.pem" --rsync-path "sudo rsync" file.pdf ubuntu@ec2-XXX-XX-XX-X.compute-1.amazonaws.com

Затем команда работает ...

building file list ... 
1 file to consider
file.pdf
       41985 100%    8.79MB/s    0:00:00 (xfer#1, to-check=0/1)
sent 41795 bytes  received 42 bytes  83674.00 bytes/sec
total size is 41985  speedup is 1.00

... но когда я перехожу на удаленный сервер, на самом деле ничего не передается.

Что я делаю не так?

--rsync-path "sudo rsync"

Это заставляет rsync запускаться привилегированным пользователем (корень), так ~/ это путь к домашнему каталогу корня. Если вы опустите эту часть кода, все должно работать.

PS. scp работает, потому что вы запускаете его под своей обычной учетной записью.

PS2. Удаление удаленного пути также работает, но ничего не отправляет по сети, а просто копирует файл "file.pdf" в файл с именем ubuntu@ec2-XXX-XX-XX-X.compute-1.amazonaws.com ( видеть с ls -l)

Когда это всего лишь пара файлов, используя rsync не большая победа scp. Но если вы управляете полным деревом документов, это здорово, потому что оно отправляет только различия. Вот что я всегда делаю:

Настройте запись для удаленного сервера в моем ~/.ssh/config файл

Host easy-short-name
  HostName ec2-XXX-XX-XX-X.compute-1.amazonaws.com
  IdentityFile ~/.ssh/private_key.pem
  User ubuntu

Затем вы можете просто использовать эту команду rsync, не связываясь с именами пользователей, ключевыми файлами или длинными именами хостов:

rsync -avrk source-dir easy-short-name:~/destination-dir

Эта установка также работает с scp и позволяет мне просто использовать ssh easy-short-name чтобы залогиниться.