Poupe 15% em todos os serviços de alojamento

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código: Skills Começar a trabalhar
Secções
Linux Segurança

Cópia de Arquivos via SSH: Guia Completo para SCP, rsync e SFTP

SSH (Secure Shell) é a base da gestão segura de servidores remotos. Quer seja um programador a implementar código, um administrador de sistemas a gerir infraestrutura, ou um utilizador avançado a manter um ambiente de VPS Hosting, a transferência segura de ficheiros entre máquinas é uma tarefa que realizará constantemente.

Este guia abrangente cobre todos os métodos principais para copiar ficheiros via SSH — incluindo SCP, rsync, SFTP e automação baseada em chaves — com sintaxe do mundo real, exemplos práticos e dicas de especialistas para o ajudar a trabalhar mais rápido e com mais segurança.

Por que usar SSH para transferências de ficheiros?

disruptive

Antes de mergulhar nas ferramentas, vale a pena compreender por que a transferência de ficheiros baseada em SSH é o padrão da indústria para administradores de servidores e programadores.

  • Encriptação ponta a ponta: Cada byte de dados — incluindo credenciais, comandos e conteúdos de ficheiros — é encriptado em trânsito usando algoritmos criptográficos modernos. Isto torna as transferências SSH imunes a packet sniffing e ataques man-in-the-middle.
  • Sem software adicional necessário: SSH é pré-instalado em praticamente todos os sistemas Linux/Unix e está disponível nativamente no Windows 10+ e macOS.
  • Versatilidade: Uma única ligação SSH pode lidar com sessões de shell interativas, transferências de ficheiros, port forwarding e scripting automatizado.
  • Amigável à automação: SSH integra-se perfeitamente com cron jobs, pipelines CI/CD e scripts de backup, permitindo transferências de ficheiros totalmente automatizadas e sem palavra-passe.
  • Fiabilidade: As ligações SSH lidam graciosamente com interrupções de rede, especialmente quando combinadas com ferramentas como rsync.

Método 1: Copiar Ficheiros com SCP (Secure Copy Protocol)

disruptive

SCP é a ferramenta mais simples e amplamente utilizada para transferências de ficheiros únicas sobre SSH. Funciona aproveitando a sua ligação SSH existente para copiar ficheiros de forma segura entre anfitriões.

1) Sintaxe Básica do SCP

scp [options] [source] [destination]

2) Carregar um Ficheiro da Máquina Local para o Servidor Remoto

scp /path/to/local/file username@remote_host:/path/to/remote/destination

Detalhamento:

/path/to/local/fileo ficheiro que deseja transferir na sua máquina local
username@remote_hosto seu nome de utilizador SSH e o nome do anfitrião ou endereço IP do servidor
/path/to/remote/destinationo diretório de destino ou caminho do ficheiro no servidor remoto

3) Descarregar um Ficheiro do Servidor Remoto para a Máquina Local

scp username@remote_host:/path/to/remote/file /path/to/local/destination

Simplesmente inverta a origem e o destino para obter um ficheiro do servidor para a sua máquina local.

4) Copiar um Diretório Inteiro Recursivamente

scp -r /path/to/local/directory username@remote_host:/path/to/remote/destination

A flag -r diz ao SCP para copiar o diretório e todo o seu conteúdo recursivamente, incluindo subdiretórios aninhados.

5) Opções Úteis do SCP

OpçãoDescrição
-P [port]Especifique uma porta SSH personalizada (nota: maiúscula -P, ao contrário da minúscula -p do SSH)
-CAtivar compressão para transferências mais rápidas em ligações lentas
-i [identity_file]Utilize uma chave privada SSH específica para autenticação
-l [limit]Limitar a utilização de largura de banda em Kbit/s
-qModo silencioso — suprimir a saída de progresso
-vModo verboso — útil para depuração de problemas de ligação

6) Quando Utilizar SCP

SCP é ideal para transferências de ficheiros rápidas e únicas onde a simplicidade é importante. Não requer configuração e funciona imediatamente em qualquer sistema com SSH instalado. No entanto, para diretórios grandes ou transferências repetidas, rsync é uma escolha significativamente melhor.

Método 2: Copiar Ficheiros com rsync

disruptive

rsync é a escolha do profissional para sincronização e transferência de ficheiros sobre SSH. A sua funcionalidade principal é a transferência delta: em vez de copiar ficheiros inteiros, rsync analisa a origem e o destino e transfere apenas as partes alteradas. Isto poupa enormes quantidades de tempo e largura de banda ao lidar com ficheiros grandes ou diretórios que são atualizados frequentemente.

1) Sintaxe Básica do rsync

rsync [options] [source] [destination]

2) Carregar um Ficheiro da Máquina Local para o Servidor Remoto

rsync -avz /path/to/local/file username@remote_host:/path/to/remote/destination

3) Sincronizar um Diretório Inteiro para um Servidor Remoto

rsync -avz /path/to/local/directory/ username@remote_host:/path/to/remote/destination/

Importante: Note a barra final / após o diretório de origem. Com uma barra final, rsync copia o conteúdo do diretório. Sem ela, rsync copia o diretório em si como um subdiretório do destino.

4) Espelhar um Diretório (Eliminar Ficheiros Removidos da Origem)

rsync -avz --delete /path/to/local/directory/ username@remote_host:/path/to/remote/destination/

A flag –delete garante que os ficheiros eliminados da origem também sejam removidos do destino, mantendo ambas as localizações perfeitamente sincronizadas.

5) Usar uma Porta SSH Personalizada

rsync -avz -e "ssh -p 2222" /path/to/local/directory/ username@remote_host:/path/to/remote/destination/

6) Opções Úteis do rsync

OpçãoDescrição
-aModo arquivo: preserva permissões, marcas de tempo, ligações simbólicas e propriedade
-vVerboso: exibe o progresso ficheiro a ficheiro durante a transferência
-zCompressão: reduz os dados transferidos pela rede
–deleteElimina ficheiros no destino que já não existem na origem
–progressMostra o progresso em tempo real para cada ficheiro
–excludeExcluir ficheiros ou padrões específicos (por exemplo, –exclude ‘*.log’)
-n ou –dry-runSimula a transferência sem copiar nada realmente
-e “ssh -p [port]”Especificar uma porta SSH personalizada
–bwlimit=[KB/s]Limitar a velocidade de transferência para evitar saturar a sua ligação

7) Quando Usar rsync

Use rsync para cópias de segurança, implementações e qualquer tarefa de sincronização recorrente. É especialmente poderoso ao gerir grandes bases de código, bibliotecas de mídia ou exportações de bases de dados num Servidor Dedicado onde a eficiência de largura de banda e a integridade dos dados são críticas.

Método 3: Copiar Ficheiros Entre Dois Servidores Remotos

disruptive

Uma capacidade menos conhecida mas extremamente útil tanto do SCP como do rsync é a capacidade de transferir ficheiros diretamente entre dois servidores remotos — sem encaminhar os dados através da sua máquina local. Isto é inestimável ao migrar servidores ou sincronizar dados entre instâncias na nuvem.

1) Copiar Ficheiros Entre Dois Servidores Remotos com SCP

scp username1@remote_host1:/path/to/file username2@remote_host2:/path/to/destination

2) Copiar Ficheiros Entre Dois Servidores Remotos com rsync

rsync -avz username1@remote_host1:/path/to/source/ username2@remote_host2:/path/to/destination/

Nota: Para que as transferências servidor-a-servidor funcionem, o servidor de origem deve ser capaz de estabelecer uma ligação SSH ao servidor de destino. Pode ser necessário configurar chaves SSH no servidor de origem ou utilizar o encaminhamento do agente SSH (ssh -A).

3) Transferência Servidor-a-Servidor via SSH Tunneling (Método Alternativo)

Se o SSH servidor-a-servidor direto não for possível devido a restrições de firewall, pode encaminhar a transferência através da sua máquina local utilizando tar e ssh:

ssh username1@remote_host1 "tar czf - /path/to/source" | ssh username2@remote_host2 "tar xzf - -C /path/to/destination"

Isto transmite um arquivo comprimido do servidor 1 diretamente para o servidor 2 através da sua sessão de terminal local.

Método 4: Copiar Ficheiros com SFTP (SSH File Transfer Protocol)

disruptive

SFTP fornece uma experiência interativa, semelhante a FTP através de uma ligação SSH encriptada. Ao contrário do SCP, que é uma ferramenta de comando único, SFTP abre uma sessão persistente onde pode navegar em diretórios, carregar, descarregar, renomear e eliminar ficheiros de forma interativa.

1) Iniciar uma Sessão SFTP

sftp username@remote_host

Será colocado numa linha de comandos SFTP (sftp>), a partir da qual pode executar os seguintes comandos:

2) Comandos SFTP Essenciais

ComandoDescrição
lsListar ficheiros no diretório remoto atual
llsListar ficheiros no diretório local atual
cd /remote/pathAlterar o diretório remoto
lcd /local/pathAlterar o diretório local
put /local/file /remote/destinationCarregar um ficheiro para o servidor remoto
get /remote/file /local/destinationDescarregar um ficheiro do servidor remoto
mput *.txtCarregar múltiplos ficheiros que correspondem a um padrão
mget *.logDescarregar múltiplos ficheiros que correspondem a um padrão
mkdir /remote/newdirCriar um diretório no servidor remoto
rm /remote/fileEliminar um ficheiro no servidor remoto
exit ou quitFechar a sessão SFTP

3) Ligar a uma Porta SSH Personalizada via SFTP

sftp -P 2222 username@remote_host

4) Quando Utilizar SFTP

SFTP é mais adequado para sessões interativas de gestão de ficheiros — por exemplo, quando precisa de navegar numa estrutura de diretórios remota, descarregar seletivamente ficheiros de registo ou carregar ficheiros de configuração para um servidor web. Muitos clientes GUI (como FileZilla, Cyberduck e WinSCP) utilizam SFTP como protocolo subjacente, tornando-o acessível também para utilizadores não técnicos.

Método 5: Automatizar Transferências de Ficheiros com Autenticação por Chave SSH

disruptive

Introduzir manualmente uma palavra-passe para cada transferência de ficheiro é ineficiente e incompatível com automação. A autenticação baseada em chaves SSH resolve isto ao permitir logins criptograficamente seguros sem palavra-passe — um pré-requisito para qualquer fluxo de trabalho de cópia de segurança ou implementação automatizado.

1) Gerar um Par de Chaves SSH

Na sua máquina local, execute:

ssh-keygen -t ed25519 -C "your_email@example.com"

Nota: ed25519 é o algoritmo moderno recomendado. Use -t rsa -b 4096 se precisar de compatibilidade com sistemas mais antigos.

Siga as instruções para guardar a chave (localização predefinida: ~/.ssh/id_ed25519) e opcionalmente defina uma frase-passe para segurança adicional.

2) Copiar a Sua Chave Pública para o Servidor Remoto

ssh-copy-id username@remote_host

Isto acrescenta a sua chave pública ao ficheiro ~/.ssh/authorized_keys no servidor remoto. Ser-lhe-á pedida a sua palavra-passe uma última vez.

Se ssh-copy-id não estiver disponível, pode fazer isto manualmente:

cat ~/.ssh/id_ed25519.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

3) Testar Autenticação Sem Palavra-passe

ssh username@remote_host

Se se conectar sem ser solicitado uma palavra-passe, a autenticação baseada em chaves está a funcionar corretamente.

4) Automatizar Transferências com um Script Shell

Com SSH sem palavra-passe configurado, pode agora automatizar transferências de ficheiros em tarefas cron ou scripts:

#!/bin/bash
# Daily backup script
rsync -avz --delete /var/www/html/ username@backup_server:/backups/www/

Adicione isto ao seu crontab (crontab -e) para executar todas as noites:

0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1

Resolução de Problemas Comuns de Transferência de Ficheiros SSH

disruptive

Até administradores experientes enfrentam problemas. Aqui estão os problemas mais comuns e suas soluções:

Permissão Negada (publickey)

  • Verifique se a chave pública foi adicionada corretamente a ~/.ssh/authorized_keys no servidor remoto
  • Verifique se ~/.ssh tem permissões 700 e authorized_keys tem permissões 600
  • Confirme se o daemon SSH permite autenticação por chave (PubkeyAuthentication yes em /etc/ssh/sshd_config)

Conexão Recusada

  • Verifique se o serviço SSH está em execução: systemctl status sshd
  • Verifique se a porta correta está sendo usada
  • Revise as regras de firewall: ufw status ou iptables -L

Velocidade de Transferência Lenta

  • Ative compressão: adicione -C ao SCP ou -z ao rsync
  • Use uma cifra mais rápida: ssh -c aes128-ctr (menos segura mas mais rápida em ligações de alta latência)
  • Para transferências grandes, considere usar rsync com –bwlimit para evitar saturar sua rede

Falha na Verificação da Chave do Host

  • A impressão digital SSH do servidor remoto foi alterada (pode indicar um problema de segurança ou uma reconstrução do servidor)
  • Remova a chave antiga: ssh-keygen -R remote_host
  • Reconecte e verifique a nova impressão digital antes de aceitá-la

Escolher a Ferramenta Certa: SCP vs. rsync vs. SFTP

disruptive

FuncionalidadeSCPrsyncSFTP
Facilidade de uso⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
Transferências delta
Sincronização de diretórios✅ (recursivo)✅ (com –delete)✅ (manual)
Modo interativo
Automação✅ (com scripts)
Eficiência de largura de bandaBaixaAltaBaixa
Melhor paraTransferências rápidas e únicasCópias de segurança e sincronizaçãoNavegação interativa

Protegendo suas transferências de arquivos SSH: Melhores práticas

disruptive

Independentemente de qual ferramenta você usar, siga estas melhores práticas de segurança para proteger seus servidores e dados:

  1. Desabilitar autenticação por senha — Use chaves SSH exclusivamente e defina PasswordAuthentication no em /etc/ssh/sshd_config
  2. Alterar a porta SSH padrão — Afastar-se da porta 22 reduz drasticamente tentativas automatizadas de força bruta
  3. Use fail2ban — Banir automaticamente IPs que falham repetidamente na autenticação
  4. Restringir acesso SSH por IP — Use regras de firewall ou diretivas AllowUsers para limitar quem pode se conectar
  5. Manter SSH atualizado — Atualize regularmente OpenSSH para corrigir vulnerabilidades conhecidas
  6. Use algoritmos de chave forte — Prefira ed25519 ou rsa-4096 em relação a algoritmos mais antigos e fracos
  7. Proteja suas aplicações web — Combine segurança SSH com um Certificado SSL para criptografar todo o tráfego para seus serviços web

Perguntas Frequentes

disruptive

1) Qual é a diferença entre SCP e SFTP?

SCP é uma ferramenta de linha de comando não-interativa projetada para transferências de arquivos rápidas e de comando único. SFTP é um protocolo interativo que permite navegar, gerenciar, fazer upload e download de arquivos em uma interface baseada em sessão. Ambos usam SSH para criptografia.

2) Posso usar rsync sem SSH?

Sim — rsync tem seu próprio modo daemon que funciona sem SSH, mas é menos seguro. Para qualquer transferência voltada para a internet, sempre use rsync sobre SSH (rsync -e ssh).

3) Como faço para transferir arquivos se meu servidor usa uma porta SSH não padrão?

Use a flag -P com SCP (scp -P 2222) ou a opção -e “ssh -p 2222” com rsync. Para SFTP, use sftp -P 2222.

4) SCP está descontinuado?

Os desenvolvedores do OpenSSH observaram que o protocolo subjacente do SCP tem limitações e recomendam usar SFTP ou rsync para novos fluxos de trabalho. No entanto, SCP permanece amplamente disponível e funcional em praticamente todos os sistemas.

Conclusão

disruptive

Dominar a transferência de ficheiros baseada em SSH é uma competência essencial para qualquer pessoa que gira servidores, implementa aplicações ou mantém infraestruturas remotas. Cada ferramenta tem o seu lugar:

  • SCP é a sua escolha para transferências rápidas, simples e pontuais
  • rsync é indispensável para cópias de segurança, implementações e sincronização eficiente de grandes conjuntos de dados
  • SFTP destaca-se em sessões interativas onde precisa de navegar e gerir ficheiros em tempo real

Combinar estas ferramentas com autenticação por chave SSH e práticas de segurança sólidas oferece-lhe um fluxo de trabalho de transferência de ficheiros robusto, automatizado e seguro que se dimensiona desde uma única conta de Alojamento Web Partilhado até arquiteturas complexas de múltiplos servidores em Servidores Dedicados.

Se está à procura de um ambiente de alojamento fiável e de alto desempenho para colocar estas competências em prática, explore os planos de Alojamento VPS da AlexHost — construídos para programadores e administradores de sistemas que exigem acesso root completo, armazenamento SSD e conectividade de rede de nível empresarial.