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.
| Funcionalidade | FTP | SFTP |
|---|---|---|
| Encriptação | Nenhuma (texto simples) | Encriptação SSH completa |
| Portas necessárias | 20 + 21 (+ intervalo passivo) | 22 (porta única) |
| Autenticação | Apenas utilizador/palavra-passe | Palavra-passe, chave SSH, 2FA |
| Compatibilidade com firewall | Complexa | Simples |
| Integridade dos dados | Não garantida | Verificada 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:
- É estabelecida uma ligação TCP à porta 22 no servidor remoto.
- É 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.
- É realizada a autenticação — seja por palavra-passe ou par de chaves pública/privada.
- O subsistema SFTP é invocado dentro da sessão SSH autenticada.
- 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 -yVerificar se o Serviço Está em Execução
sudo systemctl status sshDeverá 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 sshVerificar 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_configDeverá ver uma linha semelhante a:
Subsystem sftp /usr/lib/openssh/sftp-serverSe esta linha estiver em falta ou comentada, adicione-a e reinicie o daemon SSH:
sudo systemctl restart sshPasso 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/uploadsConfigurar 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 noEsta 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 sshPasso 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 ed25519Isto 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-ipEm 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_ipExemplo:
sftp sftpuser@203.0.113.45Ligar 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.45Ligar com uma Chave SSH
sftp -i ~/.ssh/id_ed25519 sftpuser@203.0.113.45Passo 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.
Navegação
# 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
lpwdCarregar 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.txtTerminar a Sessão
exit
# or
bye
# or press Ctrl+DPasso 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.
- Abra o FileZilla e navegue até Ficheiro → Gestor de Sites.
- Clique em Novo Site e atribua-lhe um nome descritivo.
- Defina o Protocolo para
SFTP – SSH File Transfer Protocol. - Introduza o seu Anfitrião (endereço IP ou domínio) e a Porta (predefinição: 22).
- Defina o Tipo de Início de Sessão para
Key filepara autenticação por chave SSH, ouNormalpara autenticação por palavra-passe. - Introduza o seu Nome de Utilizador e navegue até ao seu ficheiro de chave privada se usar autenticação baseada em chaves.
- 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.
- Abra o WinSCP e crie uma Nova Sessão.
- Defina o Protocolo de Ficheiros para
SFTP. - 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).
- 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>&1Reforç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 22222. 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 223. 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 fail2ban4. Desativar o Início de Sessão Root via SSH
# In /etc/ssh/sshd_config
PermitRootLogin no5. 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 40966. 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_ed25519Principais 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
rootcom permissões755 - Consulte
/var/log/auth.logpara 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,
rsyncsobre 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 3Comparação entre SFTP, FTPS e SCP
| SFTP | FTPS | SCP | |
|---|---|---|---|
| Base do protocolo | SSH | SSL/TLS sobre FTP | SSH |
| Portas | 1 (porta 22) | 2+ (21 + portas de dados) | 1 (porta 22) |
| Retomar transferências | Sim | Depende do cliente | Não |
| Listagem de diretórios | Sim | Sim | Não |
| Sessão interativa | Sim | Sim | Não |
| Compatível com firewall | Excelente | Moderada | Excelente |
| Certificado necessário | Não | Sim | Nã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.
