How do you use an identity file with rsync?

前端 未结 6 1841
死守一世寂寞
死守一世寂寞 2020-12-22 20:31

How do you use an identity file with rsync?

This is the syntax I think I should be using with rsync to use an identity file to connect:

rsync -         


        
相关标签:
6条回答
  • 2020-12-22 20:54

    You may want to use ssh-agent and ssh-add to load the key into memory. ssh will try identities from ssh-agent automatically if it can find them. Commands would be

    eval $(ssh-agent) # Create agent and environment variables
    ssh-add ~/.ssh/1234-identity
    

    ssh-agent is a user daemon which holds unencrypted ssh keys in memory. ssh finds it based on environment variables which ssh-agent outputs when run. Using eval to evaluate this output creates the environment variables. ssh-add is the command which manages the keys memory. The agent can be locked using ssh-add. A default lifetime for a key can be specified when ssh-agent is started, and or specified for a key when it is added.

    You might also want to setup a ~/.ssh/config file to supply the port and key definition. (See `man ssh_config for more options.)

    host 22.33.44.55
        IdentityFile ~/.ssh/1234-identity
        Port 1234
    

    Single quoting the ssh command will prevent shell expansion which is needed for ~ or $HOME. You could use the full or relative path to the key in single quotes.

    0 讨论(0)
  • 2020-12-22 20:58

    use key file with rsync:

    rsync -rave "ssh -i /home/test/pkey_new.pem" /var/www/test/ ubuntu@231.210.24.48:/var/www/test
    
    0 讨论(0)
  • 2020-12-22 21:00

    You have to specify the absolute path to your identity key file. This probably some sort of quirck in rsync. (it can't be perfect after all)

    I ran into this issue just a few days ago :-)

    0 讨论(0)
  • 2020-12-22 21:02

    Are you executing the command in bash or sh? This might make a difference. Try replacing ~ with $HOME. Try double-quoting the string for the -e option.

    0 讨论(0)
  • 2020-12-22 21:09

    This works for me

    rsync -avz --rsh="ssh -p1234  -i ~/.ssh/1234-identity"  \
    "/local/dir/" remoteUser@22.33.44.55:"/remote/dir/"
    
    0 讨论(0)
  • 2020-12-22 21:10

    Use either $HOME

    rsync -avz -e "ssh -p1234  -i \"$HOME/.ssh/1234-identity\"" dir remoteUser@server:
    

    or full path to the key:

    rsync -avz -e "ssh -p1234  -i /home/username/.ssh/1234-identity" dir user@server:
    

    Tested with rsync 3.0.9 on Ubuntu

    0 讨论(0)
提交回复
热议问题