Especifique o arquivo de identidade (id_rsa) com rsync

144

Eu preciso fazer backups periódicos de um diretório em um servidor remoto, que é uma máquina virtual hospedada por uma organização de pesquisa. Eles determinam que o acesso às VMs é feito através de chaves ssh, o que é bom, exceto que não consigo descobrir como apontar o rsync para a chave ssh deste servidor.

O rsync não tem nenhum problema se o arquivo de chave é ~/.ssh/id_rsa , mas quando é outra coisa eu recebo Permission denied (publickey) .

Com o ssh, posso especificar o arquivo de identidade com -i , mas o rsync parece não ter essa opção.

Eu também tentei mover temporariamente a chave na máquina local para ~/.ssh/id_rsa , mas isso também não funciona.

tl; dr

Você pode especificar um arquivo de identidade com o rsync?

    
por Jangari 01.05.2014 / 02:15

4 respostas

256

Você pode especificar o comando ssh exato por meio da opção '-e':

rsync -Pav -e "ssh -i $HOME/.ssh/somekey" username@hostname:/from/dir/ /to/dir/

Muitos usuários ssh não estão familiarizados com o arquivo ~ / .ssh / config. Você pode especificar configurações padrão por host através do arquivo de configuração.

Host hostname
    User username
    IdentityFile ~/.ssh/somekey

A longo prazo, é melhor aprender o arquivo ~ / .ssh / config.

    
por 01.05.2014 / 02:23
13

Isso pode ser feito com a configuração do usuário do SSH. link basicamente edite ~ / .ssh / config:

$ nano ~/.ssh/config
#Add Hosts below 
Host server1
HostName examplehost.com
User username
Port 22
IdentityFile /path/to/key

$ rsync -e ssh /home/user/directory [email protected]:home/user/directory/

Isso deve funcionar para qualquer programa usando SSH, rsync,

    
por 01.05.2014 / 02:30
6

Para mim, foi suficiente iniciar o agente ssh da seguinte forma:

eval 'ssh-agent -s'
ssh-add /path/to/mykey

Veja também uma resposta mais longa aqui link

    
por 14.04.2016 / 09:06
5

FYI:

1) A chave pública está sempre no diretório inicial do usuário que está efetuando login no servidor remoto, ou seja, se você fizer login como "backup", ela estará localizada em /home/backup/.ssh/authorized_keys. O ID do usuário quando você faz login define a chave pública usada no destino.

Você pode escolher o ID do usuário ao fazer a conexão de duas maneiras diferentes:

ssh [email protected]
or
ssh -l user_id  destination_server     (<-- that is lower case "L")

Por outro lado, ao final, a chave privada está em uma forma semelhante no homedir do usuário, a menos que você a substitua, como descrito na resposta de Dan.

2) Para fins de backup, pode ser desejável criar uma chave restrita que é limitada para executar apenas um comando como "rsync". Há uma boa descrição sobre isso relacionada ao backup "rsnapshot" que permite fazer backup remoto do servidor inteiro usando uma conta de usuário não privilegiada e "sudo":

"rsnapshot" howto

O Rsnapshot pode facilmente fazer backup de vários servidores remotos ou locais, tornando-o acessível & servidor de backup centralizado.

    
por 06.01.2015 / 20:10

Tags