Como rsync com uma chave privada?

6

Estou tentando rsync da minha máquina MacOS para um servidor Ubuntu que está sendo executado no Windows Azure. Para ssh, tenho que fazer o seguinte:

 $ ssh -i  myPrivateKey.key -p 22 [email protected]

Acho que o arquivo-chave pode ser uma chave pública X509, se isso ajudar (desculpe, não sou sysadmin). De qualquer forma, eu posso ssh com sucesso com o comando acima.

Agora eu gostaria de rsync arquivos para o servidor remoto. Preciso fornecer o arquivo .key como uma opção de alguma forma?

Um comando rsync normal falha:

$ sudo rsync -avz -e my/file [email protected]:/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]
    
por Richard 25.07.2012 / 10:51

1 resposta

9

O comando falha não por causa de chaves erradas, mas porque você está instruindo o rsync a executar my/file em vez de ssh (usando a opção -e , que seleciona a palavra segui-lo). Remova a opção -e primeiro.

Como rsync normalmente usa ssh para se conectar, você pode configurar ambos para sempre usar uma chave específica para se conectar ao cloudapp. Por exemplo, coloque isso na parte superior do arquivo ~/.ssh/config :

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

A parte Username me também permitirá que você salte me@ ao usar ssh ou rsync. rsync -avz my/file me.cloudapp.net:/my/path simples funcionará.

Nota: as chaves SSH não são certificados X.509; eles são simplesmente pares de chaves RSA ou ECDSA sem qualquer informação adicional.

    
por 25.07.2012 / 12:39