Este tutorial aborda o uso do rsync para transferir arquivos via SSH em uma porta não padrão, com acesso root no servidor remoto sem habilitar login root via SSH. A solução é segura, funcional e ideal para ambientes Debian 12 (ou superiores).
Cenário
Você deseja:
- Transferir arquivos via
rsync - Usar SSH em uma porta customizada (ex: 10022)
- Executar
rsynccomo root remotamente - Sem permitir login SSH direto como root
Solução
O rsync permite usar sudo no comando remoto. O comando completo é:
sudo rsync -avz --progress -e "ssh -p 10022" --rsync-path="sudo rsync" usuario@servidor:/caminho/origem/ /caminho/destino/
Parâmetros usados:
sudono início: executarsynccomo root no cliente-a: preserva permissões, datas, dono, etc.-v: saída detalhada-z: compressão--progress: exibe taxa de transferência em tempo real-e "ssh -p 10022": usa SSH na porta 10022--rsync-path="sudo rsync": executarsynccomo root no servidor remoto viasudo
Configurando o servidor Debian 12
- Dê permissão de
sudosem senha para o comandorsync:
sudo visudo -f /etc/sudoers.d/rsync_user
Conteúdo do arquivo:
usuario ALL=(ALL) NOPASSWD: /usr/bin/rsync
- (Opcional) Confirme que
requirettynão está habilitado:
No /etc/sudoers, comente ou remova:
# Defaults requiretty
Resultado
- Nenhuma senha será pedida
- O
rsyncserá executado como root no servidor remoto - A transferência será feita via SSH na porta 10022
- Permissões e metadados dos arquivos serão preservados
- A taxa de transferência será exibida em tempo real
Exemplo de saída com --progress:
backup.tar.gz
11468800 100% 5.34MB/s 0:00:02 (xfr#1, to-chk=0/1)
E ao final, com --stats:
sent 12,345,678 bytes received 1,234 bytes 2,345,678.90 bytes/sec
total size is 12,345,678 speedup is 1.00
Considerações
- Essa abordagem evita liberar o login root no SSH (
PermitRootLogin). - É compatível com qualquer distribuição Linux que use
sudo. - Ideal para automações, backups, sincronização entre servidores e deploys.
