rsync como root para / var / www com falha na “incompatibilidade de versão do protocolo”

2

Estou tentando configurar uma maneira de um comando para mover o código do site de uma máquina dev para a minha instância do Ubuntu EC2 e tê-lo copiado diretamente para a pasta / var / www / mywebsite onde o nginx espera encontrar sites nessa caixa.

Essas AMIs do Ubuntu vêm com um usuário padrão do Ubuntu. Posso rsync uma pasta sem nenhum problema da máquina dev para a pasta / home / ubuntu / da instância do EC2:

rsync -avL --progress -e "ssh -i /home/me/myhosts.pem" source-folder [email protected]:~/code

mas quando eu tento rsync essa mesma pasta para / var / www como root:

rsync -avL --progress -e "ssh -i /home/me/myhosts.pem" source-folder [email protected]:/var/www/

Eu recebo o seguinte erro:

protocol version mismatch -- is your shell clean?
(see the rsync man page for an explanation)
rsync error: protocol incompatibility (code 2) at compat.c(174) [sender=3.0.9]

Não estou bem claro porque isso está acontecendo. Notei que não consegui usar o ssh como root, pois recebo a seguinte mensagem:

Please login as the user "ubuntu" rather than the user "root".
Connection to ec2[...] closed.

que pode explicar o comportamento acima. sshd_config tem "PermitRootLogin" sim, mas acho que está bloqueado em algum outro lugar.

Eu acho que uma opção seria alterar as permissões da pasta / var / www (agora é raiz root 755) e permitir que o Ubuntu copie arquivos lá sem ter que elevar a raiz toda vez. No entanto, não tenho certeza se essa é uma boa ideia em termos de segurança e se essa é a solução correta aqui, então eu apreciaria o conselho.

Obrigado!

    
por Alexandr Kurilin 16.05.2013 / 07:19

2 respostas

2

Você também pode iniciar o rsync usando o sudo na máquina remota para executá-lo com privilégios de root. A opção que você pode usar para isso é --rsync-path :

rsync -avL --progress -e "ssh -i /home/me/myhosts.pem" --rsync-path="sudo rsync" source-folder [email protected]:/var/www/
    
por 16.05.2013 / 08:54
1

Qual é a sua versão do rsync no cliente e no servidor? correr

     rsync --version

Deve ser o mesmo no lado do cliente e do servidor.

Tente aumentar a verbosidade do log no SSH Server (depuração de nível de log no sshd_config e /etc/init.d/ssh restart) e assegure que a conexão não esteja relacionada a um único usuário (a cláusula User deve estar vazia ou conter root se você quiser faça o login como root - o que é sempre uma má idéia, exceto para depuração). Em seguida, procure por erros em /var/log/auth.log.

    
por 16.05.2013 / 11:31