Como sincronizar arquivos/diretórios usando o rsync com porta SSH não padrão

Hoje, estaremos discutindo como sincronizar arquivos usando rsync com uma porta SSH não padrão. Você pode estar se perguntando por que precisamos usar uma porta SSH não padrão? É por questões de segurança. Todo mundo sabe que a porta padrão do SSH é a 22.

Rsync Files Over SSH Non-standard Port

Portanto, é obrigatório alterar o número da porta padrão do seu SSH para algo diferente que seja muito difícil de adivinhar. Em tais casos, como você sincronizará seus arquivos/pastas com seu servidor remoto? Não se preocupe, não é tão difícil. Aqui veremos como sincronizar arquivos e pastas usando rsync com uma porta SSH não padrão.

Como você deve saber, rsync, também conhecido como Remote Sync, é uma ferramenta rápida, versátil e poderosa que pode ser usada para copiar e sincronizar arquivos/diretórios de local para local, ou de local para hosts remotos. Para mais detalhes sobre o rsync, consulte as páginas do manual:

# man rsync

Ou consulte nosso guia anterior no link abaixo.

  1. Rsync: 10 Exemplos Práticos do Comando Rsync no Linux

Alterar a Porta SSH para uma Porta Não Padrão

Como todos sabemos, por padrão o rsync usa a porta SSH padrão 22 para sincronizar arquivos de local para hosts remotos e vice-versa. Devemos alterar a porta SSH do nosso servidor remoto para reforçar a segurança.

Para fazer isso, abra e edite o arquivo de configuração do SSH /etc/ssh/sshd_config:

# vi /etc/ssh/sshd_config 

Encontre a seguinte linha. Descomente e altere o número da porta de sua escolha. Recomendo que escolha um número que seja muito difícil de adivinhar.

Certifique-se de estar usando um número único que não é utilizado por serviços existentes. Verifique este artigo netstat para saber quais serviços estão sendo executados em quais portas TCP/UDP.

Por exemplo, aqui eu uso o número da porta 1431.

[...]
Port 1431
[...]

Salve e feche o arquivo.

Em sistemas baseados em RPM, como RHEL, CentOS e Scientific Linux 7, você precisa permitir a nova porta através do seu firewall ou roteador.

# firewall-cmd --add-port 1431/tcp
# firewall-cmd --add-port 1431/tcp --permanent

No RHEL/CentOS/Scientific Linux 6 e acima, você também deve atualizar as permissões do selinux para permitir a porta.

# iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1431 -j ACCEPT
# semanage port -a -t ssh_port_t -p tcp 1431

Por fim, reinicie o serviço SSH para que as alterações tenham efeito.

# systemctl restart sshd        [On SystemD]
OR
# service sshd restart          [On SysVinit]

Agora vamos ver como sincronizar arquivos usando rsync com uma porta não padrão.

Como sincronizar com uma porta SSH não padrão

Execute o seguinte comando no terminal para sincronizar arquivos/pastas usando Rsync com uma porta ssh não padrão.

Sintaxe:
# rsync -arvz -e 'ssh -p <port-number>' --progress --delete user@remote-server:/path/to/remote/folder /path/to/local/folder

Para o propósito deste tutorial, estarei usando dois sistemas.

Detalhes do Sistema Remoto:

IP Address: 192.168.1.103
User name: tecmint
Sync folder: /backup1

Detalhes do Sistema Local:

Operating System: Ubuntu 14.04 Desktop
IP Address: 192.168.1.100
Sync folder: /home/sk/backup2

Vamos sincronizar o conteúdo da pasta /backup1 do servidor remoto com a pasta /home/sk/backup2/ do meu sistema local.

$ sudo rsync -arvz -e 'ssh -p 1431' --progress --delete [email protected]:/backup1 /home/sk/backup2
Saída de Exemplo
[email protected]'s password: 
receiving incremental file list
backup1/
backup1/linux-headers-4.3.0-040300-generic_4.3.0-040300.201511020949_amd64.deb
        752,876 100%   13.30MB/s    0:00:00 (xfr#1, to-chk=2/4)
backup1/linux-headers-4.3.0-040300_4.3.0-040300.201511020949_all.deb
      9,676,510 100%   12.50MB/s    0:00:00 (xfr#2, to-chk=1/4)
backup1/linux-image-4.3.0-040300-generic_4.3.0-040300.201511020949_amd64.deb
     56,563,302 100%   11.26MB/s    0:00:04 (xfr#3, to-chk=0/4)

sent 85 bytes  received 66,979,455 bytes  7,050,477.89 bytes/sec
total size is 66,992,688  speedup is 1.00.

Vamos verificar o conteúdo da pasta /backup1/ no servidor remoto.

$ sudo ls -l /backup1/
Saída de Exemplo
total 65428
-rw-r--r-- 1 root root  9676510 Dec  9 13:44 linux-headers-4.3.0-040300_4.3.0-040300.201511020949_all.deb
-rw-r--r-- 1 root root   752876 Dec  9 13:44 linux-headers-4.3.0-040300-generic_4.3.0-040300.201511020949_amd64.deb
-rw-r--r-- 1 root root 56563302 Dec  9 13:44 linux-image-4.3.0-040300-generic_4.3.0-040300.201511020949_amd64.deb

Agora, vamos verificar o conteúdo da pasta /backup2/ do sistema local.

$ ls /home/sk/backup2/
backup1

Como você vê na saída acima, o conteúdo de /backup1/ foi copiado com sucesso para o diretório /home/sk/backup2/ do meu sistema local.

Verifique o conteúdo da pasta /backup1/:

$ ls /home/sk/backup2/backup1/
Resultado da amostra
linux-headers-4.3.0-040300_4.3.0-040300.201511020949_all.deb            
linux-image-4.3.0-040300-generic_4.3.0-040300.201511020949_amd64.deb
linux-headers-4.3.0-040300-generic_4.3.0-040300.201511020949_amd64.deb

Veja, as pastas do sistema remoto e local têm os mesmos arquivos.

Conclusão

Sincronizar arquivos/pastas usando Rsync com SSH não é apenas fácil, mas também um método rápido e seguro. Se você estiver atrás de um firewall que restrinja a porta 22, não se preocupe. Apenas altere a porta padrão e sincronize arquivos como um profissional.

Source:
https://www.tecmint.com/sync-files-using-rsync-with-non-standard-ssh-port/