Como configurar o Rsync sem senha com SSH no UNIX / Linux?

19

Como posso configurar um rsync entre dois hosts sem fornecer nenhuma senha?


fonte
Isso deve ser muito útil: blogs.oracle.com/jkini/entry/how_to_scp_scp_and
Tom
O Maverick143 forneceu uma resposta, mas essa pergunta realmente não pertence ao StackOverflow, pois tem pouco a ver com a programação. SuperUser.com teria sido mais relevante.
Martin Martin

Respostas:

30

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(no 192.168.200.10servidor).

Isso deve solicitar a senha da sua conta no servidor remoto.

rsync -avz -e ssh /home/test/ [email protected]:/backup/test/

2. ssh-keygen gera chaves.

Agora configure sshpara que não peça senha ao executar o ssh. Use ssh-keygenno 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 [email protected]

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 [email protected]

Execute o rsync novamente, não solicitando que você digite nenhuma senha dessa vez.

rsync -avz -e ssh /home/test/ [email protected]:/backup/test/
MangeshBiradar
fonte
Isso também ajuda melhor. troy.jdmz.net/rsync/index.html
MangeshBiradar
5
Para copiar e colar de forma clara, em thegeekstuff.com/2011/07/rsync-over-ssh-without-password, você deve consultar o autor original.
Lawrence Cherone
Se você precisar usar um usuário diferente, poderá fazê-lo ao executar o ssh-copy-id: ssh-copy-id -i ~ / .ssh / id_rsa.pub [email protected]
Finni McFinger
1

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

  • Abra id_rsa.pub, copie o conteúdo
  • Efetue login no ServerB usando o mesmo usuário no comando rsync
  • No ServerB, acrescente o conteúdo a ~/.ssh/authorized_keys. Crie o arquivo se não existir. Verifique se o modo de arquivo é 700.
Johny
fonte
0

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 itvia 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.

SDsolar
fonte
-1

marcar o endereço do usuário seria melhor

ssh-copy-id -i ~/.ssh/id_rsa.pub <user_in_server>@192.168.1.100
DreamAndDead
fonte
2
Embora isso possa responder à pergunta, seria uma resposta melhor se você pudesse fornecer alguma explicação para isso.
DavidPostill
Também a sintaxe. Eu acredito que isso é usado como uma substituição de comando, algo como isto: rsync -aAVx $(ssh-copy-id -i /home/myusername/.ssh/id_rsa.pub)então todos os excludese --deleteetc. 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 sshe scppara 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.
precisa saber é o seguinte