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 exigem que o acesso às VMs seja por meio 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 problema se o arquivo-chave estiver ~/.ssh/id_rsa
, mas quando houver outra coisa que eu recebo Permission denied (publickey)
.
Com o ssh, posso especificar o arquivo de identidade -i
, mas o rsync parece não ter essa opção.
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?
sudo rsync
, que não usa as próprias teclas ssh, por algum motivo.rsync -aAP "sudo -u user ssh" user@server:dir local_dir
ao sincronizar a partir de scripts cron que funcionam como rootRespostas:
Você pode especificar o comando ssh exato através da opção '-e':
Muitos usuários ssh não estão familiarizados com o arquivo ~ / .ssh / config. Você pode especificar as configurações padrão por host através do arquivo de configuração.
A longo prazo, é melhor aprender o arquivo ~ / .ssh / config.
fonte
~/.ssh/config
arquivo - você abriu um novo universo para mim!Isso pode ser feito com a configuração do usuário SSH, consulte: http://www.cyberciti.biz/faq/create-ssh-config-file-on-linux-unix/ basicamente edite ~ / .ssh / config:
Isso deve funcionar para qualquer programa que use SSH, rsync,
fonte
Para mim, foi suficiente iniciar o ssh-agent da seguinte maneira:
Consulte também uma resposta mais longa aqui https://stackoverflow.com/questions/17846529/could-not-open-a-connection-to-your-authentication-agent
fonte
PARA SUA INFORMAÇÃO:
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 ao fazer o 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:
Por outro lado, no seu lado, a chave privada está de maneira semelhante no nome 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, limitada a 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":
Como "rsnapshot"
O Rsnapshot pode facilmente fazer backup de vários servidores remotos ou locais, tornando-o útil servidor de backup agendado e centralizado.
fonte