15%

Poupe 15% em todos os serviços

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código:

Skills
Começar a trabalhar
28.10.2024

Copiando Arquivos via SSH: Guia Completo de SCP, rsync e SFTP

SSH (Secure Shell) é a espinha dorsal da gestão segura de servidores remotos. Seja você um desenvolvedor a implementar código, um administrador de sistemas a gerir infraestrutura, ou um utilizador avançado a manter um ambiente de VPS Hosting, transferir ficheiros de forma segura entre máquinas é uma tarefa que realizará constantemente.

Este guia abrangente cobre todos os principais métodos 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 de forma mais rápida e segura.

Por que Usar SSH para Transferências de Ficheiros?

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 tanto para administradores de servidores como para desenvolvedores.

  • Encriptação ponta a ponta: Cada byte de dados — incluindo credenciais, comandos e conteúdo de ficheiros — é encriptado em trânsito usando algoritmos criptográficos modernos. Isto torna as transferências SSH imunes a sniffing de pacotes e ataques man-in-the-middle.
  • Sem software adicional necessário: SSH está 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 gerir sessões de shell interativas, transferências de ficheiros, encaminhamento de portas e scripting automatizado.
  • Compatível com 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)

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

Sintaxe Básica do SCP

scp [options] [source] [destination]

Exemplo 1: Carregar um Ficheiro da Máquina Local para o Servidor Remoto

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

Explicação:

    /path/to/local/file — o ficheiro que pretende transferir na sua máquina local
    username@remote_host — o seu nome de utilizador SSH e o hostname ou endereço IP do servidor
    /path/to/remote/destination — o diretório de destino ou caminho do ficheiro no servidor remoto
    
    Exemplo 2: Descarregar um Ficheiro do Servidor Remoto para a Máquina Local
    scp username@remote_host:/path/to/remote/file /path/to/local/destination
    Basta inverter a origem e o destino para obter um ficheiro do servidor para a sua máquina local.
    Exemplo 3: Copiar um Diretório Inteiro de Forma Recursiva
    scp -r /path/to/local/directory username@remote_host:/path/to/remote/destination
    O sinalizador -r indica ao SCP para copiar o diretório e todo o seu conteúdo de forma recursiva, incluindo subdiretórios aninhados.
    Opções Úteis do SCP
    
    
    
    
    Opção
    Descrição
    
    
    
    
    -P [port]
    Especificar uma porta SSH personalizada (nota: maiúscula -P, ao contrário do -p minúsculo do SSH)
    
    
    -C
    Ativar compressão para transferências mais rápidas em ligações lentas
    
    
    -i [identity_file]
    Usar uma chave privada SSH específica para autenticação
    
    
    -l [limit]
    Limitar o uso de largura de banda em Kbit/s
    
    
    -q
    Modo silencioso — suprimir saída de progresso
    
    
    -v
    Modo detalhado — útil para depurar problemas de ligação
    
    
    
    
    Quando Usar 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
    rsync é a escolha dos profissionais para sincronização e transferência de ficheiros via SSH. A sua funcionalidade principal é a transferência delta: em vez de copiar ficheiros inteiros, o 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.
    Sintaxe Básica do rsync
    rsync [options] [source] [destination]
    Exemplo 1: Carregar um Ficheiro da Máquina Local para o Servidor Remoto
    rsync -avz /path/to/local/file username@remote_host:/path/to/remote/destination
    Exemplo 2: 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, o rsync copia o *conteúdo* do diretório. Sem ela, o rsync copia o próprio diretório como um subdiretório do destino.
    Exemplo 3: Espelhar um Diretório (Eliminar Ficheiros Removidos da Origem)
    rsync -avz --delete /path/to/local/directory/ username@remote_host:/path/to/remote/destination/
    O sinalizador --delete garante que os ficheiros eliminados da origem também são removidos do destino, mantendo ambos os locais perfeitamente sincronizados.
    Exemplo 4: Usar uma Porta SSH Personalizada
    rsync -avz -e "ssh -p 2222" /path/to/local/directory/ username@remote_host:/path/to/remote/destination/
    Opções Úteis do rsync
    
    
    
    
    Opção
    Descrição
    
    
    
    
    -a
    Modo arquivo: preserva permissões, timestamps, links simbólicos e propriedade
    
    
    -v
    Detalhado: exibe o progresso ficheiro a ficheiro durante a transferência
    
    
    -z
    Compressão: reduz os dados transferidos pela rede
    
    
    --delete
    Elimina ficheiros no destino que já não existem na origem
    
    
    --progress
    Mostra o progresso em tempo real para cada ficheiro
    
    
    --exclude
    Excluir ficheiros ou padrões específicos (ex., --exclude '*.log')
    
    
    -n ou --dry-run
    Simular a transferência sem copiar nada de facto
    
    
    -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
    
    
    
    
    Quando Usar rsync
    Use rsync para backups, implementações e qualquer tarefa de sincronização recorrente. É especialmente poderoso ao gerir grandes bases de código, bibliotecas de media 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
    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 pela sua máquina local. Isto é inestimável ao migrar servidores ou sincronizar dados entre instâncias na nuvem.
    Copiar Ficheiros Entre Dois Servidores Remotos com SCP
    scp username1@remote_host1:/path/to/file username2@remote_host2:/path/to/destination
    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 de servidor para servidor funcionem, o servidor de origem deve ser capaz de estabelecer uma ligação SSH ao servidor de destino. Poderá ser necessário configurar chaves SSH no servidor de origem ou usar encaminhamento de agente SSH (ssh -A).
    Transferência de Servidor para Servidor via Tunelamento SSH (Método Alternativo)
    Se o SSH direto de servidor para servidor não for possível devido a restrições de firewall, pode encaminhar a transferência pela sua máquina local usando 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)
    SFTP fornece uma experiência interativa semelhante ao FTP através de uma ligação SSH encriptada. Ao contrário do SCP, que é uma ferramenta de comando único, o SFTP abre uma sessão persistente onde pode navegar em diretórios, carregar, descarregar, renomear e eliminar ficheiros de forma interativa.
    Iniciar uma Sessão SFTP
    sftp username@remote_host
    Será direcionado para uma linha de comandos SFTP (sftp>), a partir da qual pode executar os seguintes comandos:
    Comandos SFTP Essenciais
    
    
    
    
    Comando
    Descrição
    
    
    
    
    ls
    Listar ficheiros no diretório remoto atual
    
    
    lls
    Listar ficheiros no diretório local atual
    
    
    cd /remote/path
    Mudar o diretório remoto
    
    
    lcd /local/path
    Mudar o diretório local
    
    
    put /local/file /remote/destination
    Carregar um ficheiro para o servidor remoto
    
    
    get /remote/file /local/destination
    Descarregar um ficheiro do servidor remoto
    
    
    mput *.txt
    Carregar múltiplos ficheiros que correspondam a um padrão
    
    
    mget *.log
    Descarregar múltiplos ficheiros que correspondam a um padrão
    
    
    mkdir /remote/newdir
    Criar um diretório no servidor remoto
    
    
    rm /remote/file
    Eliminar um ficheiro no servidor remoto
    
    
    exit ou quit
    Fechar a sessão SFTP
    
    
    
    
    Ligar a uma Porta SSH Personalizada via SFTP
    sftp -P 2222 username@remote_host
    Quando Usar 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 log ou carregar ficheiros de configuração para um servidor web. Muitos clientes GUI (como FileZilla, Cyberduck e WinSCP) usam SFTP como protocolo subjacente, tornando-o acessível também a utilizadores não técnicos.
    Método 5: Automatizar Transferências de Ficheiros com Autenticação por Chave SSH
    Introduzir manualmente uma palavra-passe para cada transferência de ficheiros é ineficiente e incompatível com a automação. A autenticação baseada em chave SSH resolve isto ao permitir logins sem palavra-passe e criptograficamente seguros — um pré-requisito para qualquer fluxo de trabalho automatizado de backup ou implementação.
    Passo 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 e recomendado. Use -t rsa -b 4096 se precisar de compatibilidade com sistemas mais antigos.
    Siga as instruções para guardar a chave (localização padrão: ~/.ssh/id_ed25519) e opcionalmente defina uma frase-passe para segurança adicional.
    Passo 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 fazê-lo manualmente:
    cat ~/.ssh/id_ed25519.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
    Passo 3: Testar a Autenticação Sem Palavra-passe
    ssh username@remote_host
    Se se ligar sem ser solicitada uma palavra-passe, a autenticação baseada em chave está a funcionar corretamente.
    Passo 4: Automatizar Transferências com um Script Shell
    Com SSH sem palavra-passe configurado, pode agora automatizar transferências de ficheiros em cron jobs 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 em Transferências de Ficheiros SSH
    Mesmo administradores experientes encontram problemas. Aqui estão os problemas mais comuns e as suas soluções:
    Permissão Negada (publickey)
    
    Verifique se a chave pública está corretamente adicionada a ~/.ssh/authorized_keys no servidor remoto
    Verifique se ~/.ssh tem permissões 700 e authorized_keys tem permissões 600
  • Confirme que o daemon SSH permite autenticação por chave (PubkeyAuthentication yes em /etc/ssh/sshd_config)
  • Ligação Recusada

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

    A Velocidade de Transferência É Lenta

    • Ativar 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 rsync com --bwlimit para evitar saturar a sua rede

    Verificação da Chave do Host Falhou

    • A impressão digital SSH do servidor remoto mudou (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 a aceitar

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

    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 únicas rápidasBackups e sincronizaçãoNavegação interativa

    Proteger as Suas Transferências de Ficheiros SSH: Melhores Práticas

    Independentemente da ferramenta que utilizar, siga estas melhores práticas de segurança para proteger os seus servidores e dados:

    1. Desativar autenticação por palavra-passe — 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 dramaticamente as tentativas automatizadas de força bruta
    3. Usar fail2ban — Banir automaticamente IPs que falham repetidamente na autenticação
    4. Restringir o acesso SSH por IP — Use regras de firewall ou diretivas AllowUsers para limitar quem pode ligar-se
    5. Manter o SSH atualizado — Atualize regularmente o OpenSSH para corrigir vulnerabilidades conhecidas
    6. Usar algoritmos de chave fortes — Prefira ed25519 ou rsa-4096 em vez de algoritmos mais antigos e mais fracos
    7. Proteger as suas aplicações web — Combine a segurança SSH com um Certificado SSL para encriptar todo o tráfego para os seus serviços web

    Perguntas Frequentes

    Qual é a diferença entre SCP e SFTP?

    SCP é uma ferramenta de linha de comandos não interativa concebida para transferências de ficheiros rápidas com um único comando. SFTP é um protocolo interativo que lhe permite navegar, gerir, carregar e descarregar ficheiros numa interface baseada em sessão. Ambos usam SSH para encriptação.

    Posso usar rsync sem SSH?

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

    Como transfiro ficheiros se o meu servidor usa uma porta SSH não padrão?

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

    O SCP está obsoleto?

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

    Conclusão

    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 infraestrutura remota. Cada ferramenta tem o seu lugar:

    • SCP é a sua escolha para transferências rápidas, simples e únicas
    • rsync é indispensável para backups, 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 proporciona-lhe um fluxo de trabalho de transferência de ficheiros robusto, automatizado e seguro que escala 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 VPS Hosting da AlexHost — construídos para desenvolvedores e administradores de sistemas que exigem acesso root completo, armazenamento SSD e conectividade de rede de nível empresarial.

    15%

    Poupe 15% em todos os serviços

    Teste as suas habilidades e obtenha Desconto em qualquer plano

    Utilizar o código:

    Skills
    Começar a trabalhar