Как rsync с закрытым ключом?

7595
Richard

Я пытаюсь выполнить rsync с моего компьютера MacOS на сервер Ubuntu, работающий в Windows Azure. Чтобы ssh к этому, я должен сделать следующее:

 $ ssh -i myPrivateKey.key -p 22 me@me.cloudapp.net 

Я думаю, что файл ключа может быть открытым ключом X509, если это поможет (извините, я не являюсь системным администратором). Во всяком случае, я могу ssh успешно с помощью вышеуказанной команды.

Теперь я хотел бы rsync файлы на удаленный сервер. Нужно ли мне поставлять.key файл как опцию?

Обычная команда rsync не работает:

$ sudo rsync -avz -e my/file me@me.cloudapp.net:/my/path rsync: Failed to exec my/file: Permission denied (13) rsync error: error in IPC code (code 14) at /SourceCache/rsync/rsync-42/rsync/pipe.c(86) [receiver=2.6.9] rsync: connection unexpectedly closed (0 bytes received so far) [receiver] rsync error: error in rsync protocol data stream (code 12) at /SourceCache/rsync/rsync-42/rsync/io.c(452) [receiver=2.6.9] 
6

1 ответ на вопрос

9
grawity

Сбой команды не из-за неправильных ключей, а потому, что вы говорите, что my/fileвместо этого следует запустить rsyncssh (используя -eопцию, которая выбирает слово, следующее за ней). -eСначала удалите эту опцию.

Поскольку rsyncобычно используется sshдля подключения, вы можете настроить оба, чтобы всегда использовать определенный ключ для подключения к cloudapp. Например, поместите это вверху вашего ~/.ssh/configфайла:

Host me.cloudapp.net Username me IdentityFile ~/my-cloudapp-key.key IdentitiesOnly yes 

Эта Username meчасть также позволит вам пропустить добавление me@при использовании ssh или rsync. Добрая rsync -avz my/file me.cloudapp.net:/my/pathбудет работать.


Примечание: ключи SSH не являются сертификатами X.509; это просто пары ключей RSA или ECDSA без какой-либо дополнительной информации.

В Ubuntu он выглядит как «пользователь» вместо «имя пользователя» Thomas Weller 8 лет назад 1
Если вам нужен порт, отличный от 22, вы можете добавить строку с `Port 8023`. В качестве альтернативы вам придется добавить `--rsh = 'ssh -p8023'` непосредственно в командную строку. TheStoryCoder 7 лет назад 0