6

Я пытаюсь выполнить 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]

1 ответ1

9

Команда не выполняется не из-за неправильных ключей, а потому, что вы говорите rsync запустить my/file вместо ssh (используя опцию -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 без какой-либо дополнительной информации.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .