How to rsync with a private key?

10,139

The command fails not because of wrong keys, but because you're telling rsync to run my/file instead of ssh (by using the -e option, which picks up the word following it). Remove the -e option first.

Since rsync normally uses ssh to connect, you can configure both to always use a particular key for connecting to cloudapp. For example, put this at the top of your ~/.ssh/config file:

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

The Username me part will also let you skip adding me@ when using ssh or rsync. Plain rsync -avz my/file me.cloudapp.net:/my/path will work.


Note: SSH keys are not X.509 certificates; they're just plain RSA or ECDSA keypairs without any additional information.

Share:
10,139

Related videos on Youtube

Richard
Author by

Richard

Updated on September 18, 2022

Comments

  • Richard
    Richard over 1 year

    I'm trying to rsync from my MacOS machine to an Ubuntu server that's running on Windows Azure. To ssh to it, I have to do the following:

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

    I think the key file might be an X509 public key, if that helps (sorry, I'm no sysadmin). Anyway, I can ssh successfully with the above command.

    Now I'd like to rsync files to the remote server. Do I need to supply the .key file as an option somehow?

    A normal rsync command fails:

    $ 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]
    
  • Thomas Weller
    Thomas Weller over 8 years
    On Ubuntu it seems to be User instead of Username
  • TheStoryCoder
    TheStoryCoder about 7 years
    If you need a different port than 22 you can add a line with Port 8023. Alternatively you will have to add --rsh='ssh -p8023' directly to the command line.
  • miguelmorin
    miguelmorin about 4 years
    On macOS too, it's User instead of Username, else I get Bad configuration option: username.
  • Ian Lovejoy
    Ian Lovejoy about 3 years
    Most time saving tip ever! Esp. with the comments about Ubuntu and macOS. Thx all.