Como posso configurar um rsync entre dois hosts sem fornecer nenhuma senha?
Como posso configurar um rsync entre dois hosts sem fornecer nenhuma senha?
Respostas:
Abaixo está o artigo de The Geek Stuff :
1. Teste o rsync sobre ssh (com senha):
Faça um rsync para garantir que ele solicite a senha da sua conta no servidor remoto e copie os arquivos com êxito no servidor remoto.
O exemplo a seguir sincronizará a pasta local
/home/test
com a pasta remota/backup/test
(no192.168.200.10
servidor).Isso deve solicitar a senha da sua conta no servidor remoto.
rsync -avz -e ssh /home/test/ user@192.168.200.10:/backup/test/
2. ssh-keygen gera chaves.
Agora configure
ssh
para que não peça senha ao executar o ssh. Usessh-keygen
no servidor local para gerar chaves públicas e privadas.$ ssh-keygen
Digite a senha (vazia para nenhuma senha):
Digite a mesma senha novamente: Nota: Quando solicitar que você digite a senha, pressione a tecla Enter e não forneça nenhuma senha aqui.
3. ssh-copy-id copia chave pública para host remoto
Use
ssh-copy-id
, para copiar a chave pública no host remoto.ssh-copy-id -i ~/.ssh/id_rsa.pub user@192.168.200.10
Nota: O texto acima solicitará a senha da conta de usuário no host remoto e copiará a chave pública automaticamente no local apropriado. Se o ssh-copy-id não funcionar, use o método discutido anteriormente para configurar a senha do ssh menos o login.
4. Execute o rsync sobre ssh sem senha
Agora, você deve poder ssh no host remoto sem inserir a senha.
ssh user@192.168.200.10
Execute o rsync novamente, não solicitando que você digite nenhuma senha dessa vez.
rsync -avz -e ssh /home/test/ user@192.168.200.10:/backup/test/
Gere a chave pública no ServerA
$ ssh-keygen
$ Enter passphrase (empty for no passphrase):
$ Enter same passphrase again:
A chave pública será gerada e armazenada em
~/.ssh/id_rsa.pub
Copiar chave pública para host remoto
ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.1.100
Ou
~/.ssh/authorized_keys
. Crie o arquivo se não existir. Verifique se o modo de arquivo é 700.Todas essas sugestões de rsync estão falhando ao usar a versão mais recente em agosto de 2017 no Ubuntu 16.04 LTS. Nenhum deles funciona.
Todos também compartilham a deficiência de exigir um daemon rsync em execução no servidor de arquivos.
Esta resposta funciona com um NAS Linux genérico
AQUI ESTÃO ETAPAS:
1) USE rsync como mostrado abaixo. (para um diretório em / mnt ou / media que você criou ou em um dispositivo que você monta. não importa qual) 2) TRANSFERIR arquivos COM scp, como mostrado abaixo. O FileZilla também funcionará.
Tudo isso (exceto o FileZilla) pode funcionar no cron sem uma senha.
Essa configuração funciona muito bem. A única vez que você precisa da senha é quando configura o ssh-copy-id inicial para configurar os logins sem senha do RSA. Então você o programa no FileZilla uma vez. Depois disso, dia após dia, nenhuma solicitação de senha acontece. Isso é facil. E a melhor parte é que você pode usar todos os benefícios do programa rsync.
Esta resposta explica como usar o rsync em si sem uma senha.
Além disso, não há necessidade de instalar outro daemon (rsync) em nenhum dos sistemas.
Se você ainda não o fez, faça o seguinte:
ssh-keygen
ssh-copy-id -i ~/.ssh/id_rse.pub NASserver
e teste com isso:
ssh NASserver
e talvez algo como isto:
scp myfile myusername@NASserver:Documents
Como tenho um segundo disco rígido, uso o rsync para copiar a unidade de inicialização para um subdiretório no sdb1 (montado em / mnt e excluído do rsync).
Se você não possui um disco rígido físico e possui espaço suficiente, basta criar um subdiretório em / mnt (ou / media) e usá-lo.
Desde que o diretório seja excluído, não importa se ele está em uma unidade separada ou não.
Aqui está o script de backup:
cls
echo "EMPTYING TRASH"
rm ~/.local.share/Trash/*
echo "====================================================================="
echo " BEGINNING rsync from root to /mnt/full/sysbkp"
echo "====================================================================="
time sudo rsync -aAXv / --delete --ignore-errors --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /mnt/full/mysystem
APÓS o rsync, use um script:
Eu sempre crio um novo diretório no servidor NAS de destino: / mnt / fullsys / mysystem, para que apenas os arquivos relevantes sejam transferidos.
ssh -e"mv /mnt/fullsys/mysystem mysystem.bak" myusername@NASserver
ssh -e"mkdir /mnt/fullsys/mysystem" myusername@NASserver
scp -r /mnt/full/mysystem myusername@NASserver:/mnt/fullsys/mysystem
Voila! Demora um pouco, mas depois está pronto.
Ambos os scripts podem funcionar bem no cron.
A alternativa é usar o FileZilla para enviar o servidor NAS manualmente.
Como pode haver exclusões, eu sempre
make a new directory and enter it
via FileZilla no disco rígido de 1 TB de destino, para que apenas os arquivos relevantes sejam transferidos.
Somente quando a transferência termina, removo a versão mais antiga.
Voila. Sucesso.
marcar o endereço do usuário seria melhor
ssh-copy-id -i ~/.ssh/id_rsa.pub <user_in_server>@192.168.1.100
rsync -aAVx $(ssh-copy-id -i /home/myusername/.ssh/id_rsa.pub)
então todos os excludes
e --delete
etc. Eu ainda não o fiz funcionar, mas este é o mais próximo que eu já vi. Supostamente, você deve fazer isso, mesmo que já possa ssh
e scp
para o servidor de destino, e o daemon rsync precisa estar em execução porque não usa o formato sftp normal. Eu ainda estou procurando.