O SFTP funciona dentro da sua ligação SSH existente, por isso não precisa de software adicional no servidor nem de outra porta. Num VPS Linux Infrawire é a forma mais segura de enviar um site ou obter cópias de segurança com um cliente gráfico como o FileZilla. Este guia cobre o acesso por palavra-passe e por chave, as permissões dos ficheiros e um utilizador limitado a SFTP.
📋 Pré-requisitos
- Um VPS Linux (Ubuntu 24.04, Debian 12, AlmaLinux 9 ou Rocky 9) com SSH a funcionar na porta 22.
- O IP do VPS e a palavra-passe de root, disponíveis na sua área de cliente.
- O FileZilla Client instalado no seu computador (o Client, não o FileZilla Server).
1. Ligar rapidamente com palavra-passe
Para um primeiro teste, use a barra de ligação rápida no topo do FileZilla:
- Servidor:
sftp://VPS_IP - Utilizador:
USER - Palavra-passe: a sua palavra-passe
- Porta:
22
Aceite a chave do host na primeira vez. O painel da direita mostra a árvore de ficheiros do servidor. Prefira um utilizador normal a root: um clique errado faz menos estragos.
Bashadduser USER usermod -aG sudo USER
No AlmaLinux ou Rocky use useradd -m USER, passwd USER e usermod -aG wheel USER.
2. Iniciar sessão com uma chave SSH
As chaves são mais seguras do que as palavras-passe e não podem ser descobertas por força bruta. No seu computador, gere um par de chaves e copie a parte pública para o servidor.
Bashssh-keygen -t ed25519 -C "filezilla" ssh-copy-id USER@VPS_IP
No FileZilla abra Editar > Definições > Ligação > SFTP > Adicionar ficheiro de chave e escolha a sua chave privada (o ficheiro sem .pub). O FileZilla pode propor convertê-la para o seu formato; aceite. Nunca partilhe a chave privada.
3. Guardar a ligação no Gestor de sites
- Abra Ficheiro > Gestor de sites e clique em Novo site.
- Protocolo: SFTP - SSH File Transfer Protocol.
- Servidor:
VPS_IP, Porta:22. - Tipo de início de sessão: Normal para palavra-passe, ou Ficheiro de chave para uma chave.
- Utilizador:
USER. No separador Avançado defina a pasta remota por omissão, por exemplo/var/www/example.com. - Clique em Ligar. O site fica guardado para a próxima vez.
Evite guardar palavras-passe num computador que não controla.
4. Definir proprietário e permissões dos ficheiros web
Os ficheiros enviados ficam muitas vezes com o proprietário errado, o que causa erros 403 ou 500. Atribua a pasta web ao seu utilizador e deixe o servidor web lê-la.
Bashmkdir -p /var/www/example.com chown -R USER:www-data /var/www/example.com find /var/www/example.com -type d -exec chmod 755 {} \; find /var/www/example.com -type f -exec chmod 644 {} \;
No AlmaLinux e Rocky o grupo do servidor web é apache em vez de www-data. As pastas onde a aplicação tem de escrever (uploads, cache) podem ficar em 775, com o grupo do servidor web como grupo proprietário. Nunca use chmod -R 777. No FileZilla pode também clicar com o botão direito num ficheiro e escolher Permissões do ficheiro.
5. Opcional: um utilizador só de SFTP preso numa pasta
Para dar a um cliente acesso a uma única pasta sem shell, use um chroot. A própria pasta chroot tem de pertencer a root e não ser gravável por mais ninguém; caso contrário o sshd recusa o início de sessão.
Bashgroupadd sftpusers useradd -M -d /files -s /usr/sbin/nologin -G sftpusers CLIENT passwd CLIENT mkdir -p /var/sftp/CLIENT/files chown root:root /var/sftp/CLIENT chmod 755 /var/sftp/CLIENT chown CLIENT:CLIENT /var/sftp/CLIENT/files
Acrescente este bloco ao fim de /etc/ssh/sshd_config:
INI1Match Group sftpusers 2 ChrootDirectory /var/sftp/%u 3 ForceCommand internal-sftp 4 AllowTcpForwarding no 5 X11Forwarding no
Teste a sintaxe antes de recarregar e mantenha a sessão SSH atual aberta até confirmar que um novo início de sessão funciona.
Bashsshd -t systemctl reload ssh
O serviço chama-se ssh no Ubuntu e Debian, e sshd no AlmaLinux e Rocky. O utilizador restrito entra em /files e não vê mais nada.
Verificação
Teste num terminal antes de culpar o FileZilla:
Bashsftp USER@VPS_IP sftp> pwd sftp> put test.txt sftp> ls -l
Depois envie um ficheiro com o FileZilla e verifique o proprietário com ls -l /var/www/example.com.
Resolução de problemas
- Ligação recusada ou tempo esgotado: confirme que o sshd está ativo (
systemctl status ssh), que a porta está aberta na firewall e que escolheu SFTP, não FTP. - Permission denied (publickey): a chave não está em
~/.ssh/authorized_keysou as permissões estão erradas. Corrija comchmod 700 ~/.sshechmod 600 ~/.ssh/authorized_keys. - Utilizador em chroot desligado logo após entrar: a pasta chroot não pertence a root ou é gravável pelo grupo. Procure «bad ownership or modes for chroot directory» em
journalctl -u ssh. - Não consegue enviar, permissão negada numa pasta: o utilizador não é dono do destino. Repita os comandos
chownechmoddo passo 4.
✅ Já pode mover ficheiros em segurança para o seu VPS Linux com o FileZilla.