Como Sincronizar Arquivos/Diretórios Usando Rsync com Porta SSH Não-padrão

Hoje, estaremos discutindo sobre 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. Eu recomendo que você escolha um número que seja muito difícil de adivinhar.

Certifique-se de usar um número único que não seja utilizado por serviços existentes. Consulte este artigo netstat para saber quais serviços estão em execução em quais portas TCP/UDP.

Por exemplo, aqui estou usando 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 superiores, 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 Rsync com 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 fins 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/