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
30.10.2024
3 +1

Protocolo SFTP: O Guia Completo para Transferências de Arquivos Seguras no Seu VPS

Transferir ficheiros de e para o seu servidor é uma das tarefas mais rotineiras na hospedagem web e na administração de sistemas — mas também é uma das mais frequentemente mal geridas do ponto de vista da segurança. Protocolos legados como o FTP transmitem credenciais e dados em texto simples, deixando o seu servidor completamente exposto a interceções. O SFTP (SSH File Transfer Protocol) elimina esse risco por completo, encaminhando cada byte de dados através de um túnel SSH encriptado.

Este guia abrange tudo o que precisa de saber sobre SFTP: como funciona internamente, como configurá-lo num VPS Linux, como ligar-se usando ferramentas de linha de comandos e clientes GUI, e por que razão deve ser o seu método predefinido para todas as operações de transferência de ficheiros.

O Que É o SFTP e Como Difere do FTP?

SFTP significa SSH File Transfer Protocol. Apesar do nome semelhante, não é uma simples extensão do protocolo FTP tradicional — é um protocolo completamente separado, construído de raiz para funcionar sobre SSH (Secure Shell). Esta distinção tem uma enorme importância na prática.

FuncionalidadeFTPSFTP
EncriptaçãoNenhuma (texto simples)Encriptação SSH completa
Portas necessárias20 + 21 (+ intervalo passivo)22 (porta única)
AutenticaçãoApenas utilizador/palavra-passePalavra-passe, chave SSH, 2FA
Compatibilidade com firewallComplexaSimples
Integridade dos dadosNão garantidaVerificada criptograficamente

O FTP tradicional envia o seu nome de utilizador, palavra-passe e todos os dados de ficheiros em texto simples. Qualquer pessoa que realize uma captura de pacotes no mesmo segmento de rede pode ler as suas credenciais instantaneamente. O SFTP encripta toda a sessão — autenticação, comandos e dados de ficheiros — usando a mesma criptografia comprovada que protege as ligações SSH em todo o mundo.

Como Funciona o SFTP: Uma Visão Técnica Geral

Quando inicia uma sessão SFTP, ocorre a seguinte sequência:

  1. É estabelecida uma ligação TCP à porta 22 no servidor remoto.
  2. É realizado o handshake SSH: o servidor apresenta a sua chave de anfitrião e o cliente verifica-a em relação aos anfitriões conhecidos para prevenir ataques man-in-the-middle.
  3. É realizada a autenticação — seja por palavra-passe ou par de chaves pública/privada.
  4. O subsistema SFTP é invocado dentro da sessão SSH autenticada.
  5. As operações de ficheiros (carregar, descarregar, renomear, eliminar, listar diretórios) são realizadas sobre o canal encriptado.

Toda a sessão, desde a autenticação até ao último byte de dados transferidos, é protegida por encriptação simétrica negociada durante o handshake SSH. Nenhuma credencial ou conteúdo de ficheiro viaja alguma vez em texto simples.

Passo 1: Instalar e Configurar o Servidor OpenSSH

A maioria das distribuições Linux modernas — incluindo Ubuntu e Debian — inclui o OpenSSH pré-instalado ou disponível nos seus repositórios de pacotes. Se estiver a executar uma instância de VPS Hosting nova, verifique se o servidor OpenSSH está presente e em execução.

Instalar o OpenSSH no Ubuntu/Debian

sudo apt update && sudo apt install openssh-server -y

Verificar se o Serviço Está em Execução

sudo systemctl status ssh

Deverá ver active (running) no resultado. Se o serviço não estiver em execução, inicie-o e ative-o:

sudo systemctl start ssh
sudo systemctl enable ssh

Verificar se o SFTP Está Ativado

O OpenSSH inclui suporte SFTP através de um subsistema integrado. Confirme que está configurado em /etc/ssh/sshd_config:

grep -i sftp /etc/ssh/sshd_config

Deverá ver uma linha semelhante a:

Subsystem sftp /usr/lib/openssh/sftp-server

Se esta linha estiver em falta ou comentada, adicione-a e reinicie o daemon SSH:

sudo systemctl restart ssh

Passo 2: Criar um Utilizador SFTP Dedicado (Boa Prática)

Em vez de usar a sua conta root ou uma conta de administrador geral para transferências de ficheiros, crie um utilizador SFTP dedicado com acesso restrito. Isto limita o impacto caso as credenciais sejam alguma vez comprometidas.

Criar o Utilizador e Definir um Diretório Home

sudo adduser sftpuser
sudo mkdir -p /var/sftp/uploads
sudo chown root:root /var/sftp
sudo chmod 755 /var/sftp
sudo chown sftpuser:sftpuser /var/sftp/uploads

Configurar o Chroot Jail no sshd_config

Abra /etc/ssh/sshd_config e adicione o seguinte bloco no final do ficheiro:

Match User sftpuser
    ForceCommand internal-sftp
    PasswordAuthentication yes
    ChrootDirectory /var/sftp
    PermitTunnel no
    AllowAgentForwarding no
    AllowTcpForwarding no
    X11Forwarding no

Esta configuração confina o utilizador dentro de /var/sftp, impedindo-o de navegar para outras partes do sistema de ficheiros. Reinicie o SSH para aplicar as alterações:

sudo systemctl restart ssh

Passo 3: Configurar a Autenticação por Chave SSH para SFTP

A autenticação por palavra-passe é conveniente, mas menos segura do que a autenticação baseada em chaves. Para ambientes de produção, os pares de chaves SSH são fortemente recomendados.

Gerar um Par de Chaves SSH na Sua Máquina Local

No Linux ou macOS:

ssh-keygen -t ed25519 -C "sftp-key-$(date +%Y%m%d)"

No Windows (PowerShell ou Windows Terminal):

ssh-keygen -t ed25519

Isto gera dois ficheiros: uma chave privada (mantenha-a em segredo, nunca a partilhe) e uma chave pública (terminada em .pub).

Copiar a Chave Pública para o Servidor

ssh-copy-id -i ~/.ssh/id_ed25519.pub sftpuser@your-server-ip

Em alternativa, anexe manualmente a chave pública a ~/.ssh/authorized_keys no servidor.

Desativar a Autenticação por Palavra-Passe (Opcional mas Recomendado)

Assim que a autenticação baseada em chaves estiver confirmada como funcional, desative o início de sessão por palavra-passe para o utilizador SFTP em sshd_config, alterando PasswordAuthentication yes para PasswordAuthentication no dentro do bloco Match User.

Passo 4: Ligar ao SFTP a Partir da Linha de Comandos

O cliente SFTP de linha de comandos está disponível nativamente no Linux e macOS, e está incluído no OpenSSH no Windows 10/11.

Sintaxe Básica de Ligação

sftp username@hostname_or_ip

Exemplo:

sftp sftpuser@203.0.113.45

Ligar numa Porta Não Padrão

Se o seu daemon SSH escuta numa porta diferente da 22 (uma medida comum de reforço de segurança):

sftp -P 2222 sftpuser@203.0.113.45

Ligar com uma Chave SSH

sftp -i ~/.ssh/id_ed25519 sftpuser@203.0.113.45

Passo 5: Comandos SFTP Essenciais

Após a ligação, opera numa shell SFTP interativa. Os seguintes comandos cobrem a grande maioria das tarefas diárias de gestão de ficheiros.

# List files on the remote server
ls
ls -la

# Change remote directory
cd /var/sftp/uploads

# Show current remote directory
pwd

# List files on your local machine
lls

# Change local directory
lcd ~/Downloads

# Show current local directory
lpwd

Carregar Ficheiros

# Upload a single file
put localfile.txt

# Upload a file to a specific remote path
put localfile.txt /var/sftp/uploads/localfile.txt

# Upload an entire directory recursively
put -r /local/directory /var/sftp/uploads/

Descarregar Ficheiros

# Download a single file to the current local directory
get remotefile.txt

# Download a file to a specific local path
get remotefile.txt ~/Downloads/remotefile.txt

# Download an entire directory recursively
get -r /var/sftp/uploads/ ~/local-backup/

Gestão de Ficheiros e Diretórios

# Create a remote directory
mkdir new-folder

# Remove a remote file
rm old-file.txt

# Remove a remote directory
rmdir empty-folder

# Rename or move a file
rename old-name.txt new-name.txt

Terminar a Sessão

exit
# or
bye
# or press Ctrl+D

Passo 6: Ligar com Clientes GUI

O SFTP de linha de comandos é poderoso, mas os clientes gráficos são frequentemente mais práticos para gerir grandes quantidades de ficheiros ou para membros da equipa menos familiarizados com o terminal.

FileZilla (Windows, macOS, Linux)

O FileZilla é um dos clientes SFTP gratuitos mais amplamente utilizados disponíveis.

  1. Abra o FileZilla e navegue até Ficheiro → Gestor de Sites.
  2. Clique em Novo Site e atribua-lhe um nome descritivo.
  3. Defina o Protocolo para SFTP – SSH File Transfer Protocol.
  4. Introduza o seu Anfitrião (endereço IP ou domínio) e a Porta (predefinição: 22).
  5. Defina o Tipo de Início de Sessão para Key file para autenticação por chave SSH, ou Normal para autenticação por palavra-passe.
  6. Introduza o seu Nome de Utilizador e navegue até ao seu ficheiro de chave privada se usar autenticação baseada em chaves.
  7. Clique em Ligar.

Agora pode arrastar e largar ficheiros entre a sua máquina local (painel esquerdo) e o servidor remoto (painel direito).

WinSCP (Windows)

O WinSCP é uma alternativa popular exclusiva para Windows com uma interface de dois painéis e forte integração com os formatos de chave PuTTY.

  1. Abra o WinSCP e crie uma Nova Sessão.
  2. Defina o Protocolo de Ficheiros para SFTP.
  3. Introduza o Nome do anfitrião, o Número da porta, o Nome de utilizador e a Palavra-passe (ou configure uma chave SSH em Avançado → SSH → Autenticação).
  4. Clique em Iniciar sessão.

Cyberduck (macOS, Windows)

O Cyberduck é um cliente moderno e elegante que suporta SFTP juntamente com S3, FTP e outros protocolos. Ligue-se clicando em Abrir Ligação, selecionando SFTP (SSH File Transfer Protocol) e introduzindo as credenciais do seu servidor.

Automatizar Transferências SFTP com Scripts

Para tarefas recorrentes como cópias de segurança, recolha de registos ou pipelines de implementação, pode automatizar as transferências SFTP usando scripts de shell combinados com autenticação por chave SSH (sem necessidade de introduzir palavra-passe).

Exemplo: Script de Cópia de Segurança Automatizada

#!/bin/bash

# Configuration
REMOTE_USER="sftpuser"
REMOTE_HOST="203.0.113.45"
REMOTE_DIR="/var/sftp/uploads/backups"
LOCAL_BACKUP_DIR="/var/backups/myapp"
SSH_KEY="/root/.ssh/id_ed25519"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="backup_${DATE}.tar.gz"

# Create the backup archive
tar -czf "/tmp/${BACKUP_FILE}" "${LOCAL_BACKUP_DIR}"

# Upload via SFTP
sftp -i "${SSH_KEY}" "${REMOTE_USER}@${REMOTE_HOST}" <<EOF
cd ${REMOTE_DIR}
put /tmp/${BACKUP_FILE}
bye
EOF

# Clean up local temp file
rm "/tmp/${BACKUP_FILE}"

echo "Backup ${BACKUP_FILE} uploaded successfully."

Agende isto com um cron job para ser executado todas as noites:

crontab -e
# Add:
0 2 * * * /usr/local/bin/backup-sftp.sh >> /var/log/sftp-backup.log 2>&1

Reforço de Segurança para SFTP em Produção

Executar SFTP num servidor de produção requer mais do que apenas a configuração predefinida. Aplique estas medidas de reforço para reduzir significativamente a sua superfície de ataque.

1. Alterar a Porta SSH Predefinida

Alterar a porta 22 para uma porta não padrão (por exemplo, 2222 ou 22222) reduz drasticamente as tentativas automatizadas de força bruta:

# In /etc/ssh/sshd_config
Port 2222

2. Restringir o Acesso SFTP por Endereço IP

Se a sua equipa se liga a partir de endereços IP conhecidos, restrinja o acesso SSH/SFTP usando UFW ou /etc/hosts.allow:

sudo ufw allow from 203.0.113.10 to any port 22
sudo ufw deny 22

3. Implementar o Fail2Ban

O Fail2Ban monitoriza os registos de autenticação e bloqueia automaticamente endereços IP após um número configurável de tentativas de início de sessão falhadas:

sudo apt install fail2ban -y
sudo systemctl enable fail2ban

4. Desativar o Início de Sessão Root via SSH

# In /etc/ssh/sshd_config
PermitRootLogin no

5. Usar Algoritmos de Chave SSH Robustos

Prefira chaves ed25519 ou ecdsa em detrimento do algoritmo rsa mais antigo. Ao gerar chaves, use sempre pelo menos 4096 bits para RSA:

ssh-keygen -t ed25519
# or
ssh-keygen -t rsa -b 4096

6. Definir Permissões de Ficheiros Adequadas

Certifique-se de que os ficheiros de configuração SSH têm permissões corretas para evitar modificações não autorizadas:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/id_ed25519

Principais Vantagens do SFTP em Relação a Protocolos Alternativos

Segurança

O SFTP encripta tanto o canal de controlo como o canal de dados usando SSH. Não existe nenhum cenário em que as credenciais ou o conteúdo dos ficheiros viaje em texto simples. Isto torna-o categoricamente mais seguro do que o FTP e mais simples de proteger do que o FTPS (FTP sobre SSL/TLS), que requer gestão de certificados e múltiplas portas.

Compatibilidade com Firewall e NAT

O FTP em modo passivo requer que um intervalo de portas de dados seja aberto na firewall, o que representa um encargo administrativo significativo e uma superfície de ataque mais ampla. O SFTP usa uma única porta (22 por predefinição), tornando as regras de firewall simples e previsíveis.

Autenticação Unificada com SSH

Como o SFTP funciona sobre SSH, herda todo o ecossistema de autenticação: autenticação por palavra-passe, autenticação por chave pública, autenticação baseada em certificados e autenticação de dois fatores. Se já gere o acesso SSH ao seu servidor, o SFTP não requer infraestrutura de autenticação adicional.

Integridade dos Dados

A camada de transporte do SSH inclui códigos de autenticação de mensagens (MACs) que verificam a integridade de cada pacote. Isto significa que não só os seus dados estão encriptados em trânsito, como qualquer adulteração ou corrupção é detetada e a transferência é interrompida.

Suporte para Retoma

Ao contrário do FTP básico, o SFTP suporta a retoma de transferências interrompidas, o que é fundamental ao carregar ficheiros grandes através de ligações pouco fiáveis.

SFTP no Contexto da Sua Stack de Hospedagem

O SFTP não é apenas uma ferramenta autónoma — integra-se naturalmente num fluxo de trabalho de hospedagem e implementação mais amplo. Estes são os casos de utilização mais comuns:

Gestão de WordPress e CMS: Carregue temas, plugins e ficheiros de média diretamente para o seu servidor sem depender de um painel de controlo de hospedagem. Isto é particularmente útil quando se trabalha com um VPS com cPanel ou outros ambientes de painel de controlo onde necessita de acesso direto ao sistema de ficheiros.

Implementação de aplicações: Envie recursos compilados, ficheiros de configuração ou diretórios de aplicações completos para o seu servidor como parte de um pipeline de implementação.

Cópias de segurança de bases de dados e configurações: Automatize a transferência de dumps de bases de dados e cópias de segurança de configurações para uma localização de armazenamento remota usando a abordagem de scripting descrita acima.

Recolha de registos: Transfira registos do servidor para a sua máquina local para análise sem conceder acesso SSH amplo aos analistas.

Publicação de sites estáticos: Implemente sites estáticos gerados por ferramentas como Hugo, Jekyll ou Next.js diretamente na raiz web do seu servidor.

Se estiver a gerir múltiplos projetos ou precisar de ambientes isolados para diferentes clientes, um plano de VPS Hosting dá-lhe o acesso root e a flexibilidade para configurar o SFTP exatamente como o seu fluxo de trabalho exige — incluindo chroot jails, permissões por utilizador e configurações de portas personalizadas.

Para equipas que gerem um grande número de domínios e sites, combinar o acesso SFTP com Hospedagem Web Partilhada ou um ambiente dedicado garante que as transferências de ficheiros permanecem rápidas, encriptadas e auditáveis.

Resolução de Problemas Comuns do SFTP

"Ligação recusada" na Porta 22

  • Verifique se o serviço SSH está em execução: sudo systemctl status ssh
  • Verifique se a porta 22 está aberta na sua firewall: sudo ufw status
  • Confirme que está a ligar ao endereço IP correto

"Permissão negada" Durante o Carregamento de Ficheiros

  • Verifique se o diretório de destino existe e tem permissão de escrita para o utilizador SFTP
  • Verifique a propriedade do diretório chroot: a raiz do chroot deve ser propriedade de root com permissões 755
  • Consulte /var/log/auth.log para mensagens de erro detalhadas

"Falha na verificação da chave de anfitrião"

  • A chave de anfitrião do servidor foi alterada (possível após uma reinstalação ou reatribuição de IP)
  • Remova a chave antiga: ssh-keygen -R hostname_or_ip
  • Ligue novamente e aceite a nova chave de anfitrião

Velocidades de Transferência Lentas

  • Teste o débito da sua rede de forma independente para descartar um problema de conectividade
  • Considere ativar a compressão SSH para transferências com muito texto: sftp -C username@hostname
  • Para ficheiros muito grandes, rsync sobre SSH pode ser mais eficiente do que SFTP

"Pipe interrompido" ou Desligamentos Durante a Transferência

  • Aumente as definições de keepalive do SSH em ~/.ssh/config:
  Host *
      ServerAliveInterval 60
      ServerAliveCountMax 3

Comparação entre SFTP, FTPS e SCP

SFTPFTPSSCP
Base do protocoloSSHSSL/TLS sobre FTPSSH
Portas1 (porta 22)2+ (21 + portas de dados)1 (porta 22)
Retomar transferênciasSimDepende do clienteNão
Listagem de diretóriosSimSimNão
Sessão interativaSimSimNão
Compatível com firewallExcelenteModeradaExcelente
Certificado necessárioNãoSimNão

SCP (Secure Copy Protocol) é mais rápido para cópias simples de ficheiros, mas carece das capacidades de sessão interativa do SFTP. Não consegue listar diretórios, retomar transferências ou gerir ficheiros remotos. Use SCP para cópias pontuais rápidas; use SFTP para gestão interativa de ficheiros e automação.

FTPS adiciona encriptação TLS ao protocolo FTP tradicional. Requer gestão de certificados SSL (considere combinar com Certificados SSL para o seu domínio) e é mais complexo de configurar através de firewalls. O SFTP é geralmente preferido para novas implementações, a menos que tenha um requisito específico de compatibilidade com FTPS.

Perguntas Frequentes

O SFTP é o mesmo que FTPS?

Não. O SFTP (SSH File Transfer Protocol) é um protocolo completamente separado que funciona sobre SSH. O FTPS é FTP com encriptação TLS/SSL adicionada por cima. São incompatíveis entre si.

O SFTP requer uma porta separada do SSH?

Não. O SFTP funciona sobre a mesma ligação SSH na porta 22. Não é necessário abrir portas adicionais.

Posso usar SFTP com autenticação de dois fatores?

Sim. Como o SFTP usa SSH para autenticação, qualquer método 2FA suportado pelo SSH (como TOTP via Google Authenticator ou Duo) pode ser aplicado às sessões SFTP também.

O SFTP é adequado para transferir ficheiros grandes?

Sim. O SFTP suporta transferências de ficheiros grandes e pode retomar transferências interrompidas, tornando-o fiável para carregamentos e descarregamentos de grande dimensão.

Posso restringir um utilizador SFTP a um diretório específico?

Sim. A configuração do chroot jail descrita no Passo 2 deste guia confina o utilizador a um diretório designado, impedindo o acesso ao resto do sistema de ficheiros.

Conclusão

O SFTP é o padrão de excelência para transferências seguras de ficheiros em ambientes de servidores Linux. Ao combinar a simplicidade da gestão de ficheiros ao estilo FTP com a robusta segurança criptográfica do SSH, elimina as vulnerabilidades mais significativas dos protocolos de texto simples, mantendo-se simples de configurar e utilizar.

As principais conclusões deste guia:

  • Instale o OpenSSH no seu servidor — o suporte SFTP está incluído automaticamente
  • Crie um utilizador SFTP dedicado com um chroot jail para ambientes de produção
  • Use autenticação por chave SSH em vez de palavras-passe sempre que possível
  • Aplique medidas de reforço de segurança: altere a porta predefinida, implemente o Fail2Ban, desative o início de sessão root
  • Automatize transferências recorrentes com scripts de shell e cron jobs
  • Escolha o cliente adequado — CLI para scripting e automação, FileZilla ou WinSCP para uso interativo

Quer esteja a gerir uma instalação WordPress, a implementar uma aplicação web ou a automatizar cópias de segurança do servidor, o SFTP fornece a segurança, fiabilidade e flexibilidade que o seu fluxo de trabalho exige. Combine-o com um ambiente de VPS Hosting de alto desempenho com armazenamento SSD, proteção DDoS e acesso root completo, e terá uma configuração de transferência de ficheiros que é simultaneamente rápida e genuinamente segura.

Para equipas com necessidades de infraestrutura mais complexas — incluindo aplicações de alto tráfego ou cargas de trabalho com uso intensivo de recursos — explore os Servidores Dedicados para máximo desempenho e isolamento, ou consulte os Painéis de Controlo VPS disponíveis para encontrar a interface de gestão que melhor se adapta ao fluxo de trabalho da sua equipa.

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