Le SFTP passe par votre connexion SSH existante : aucun logiciel serveur ni port supplémentaire n'est nécessaire. Sur un VPS Linux Infrawire, c'est la façon la plus sûre d'envoyer un site ou de récupérer des sauvegardes avec un client graphique comme FileZilla. Ce guide couvre la connexion par mot de passe et par clé, les permissions de fichiers et un utilisateur limité au SFTP.
📋 Prérequis
- Un VPS Linux (Ubuntu 24.04, Debian 12, AlmaLinux 9 ou Rocky 9) avec SSH actif sur le port 22.
- L'IP du VPS et le mot de passe root, disponibles dans votre espace client.
- FileZilla Client installé sur votre ordinateur (le Client, pas FileZilla Server).
1. Se connecter rapidement avec un mot de passe
Pour un premier test, utilisez la barre de connexion rapide en haut de FileZilla :
- Hôte :
sftp://VPS_IP - Identifiant :
USER - Mot de passe : votre mot de passe
- Port :
22
Acceptez la clé de l'hôte la première fois. Le panneau de droite affiche l'arborescence du serveur. Préférez un utilisateur normal à root : une fausse manipulation fera moins de dégâts.
Bashadduser USER usermod -aG sudo USER
Sur AlmaLinux ou Rocky, utilisez useradd -m USER, passwd USER et usermod -aG wheel USER.
2. Se connecter avec une clé SSH
Les clés sont plus sûres que les mots de passe et résistent à la force brute. Sur votre ordinateur, générez une paire de clés et copiez la partie publique sur le serveur.
Bashssh-keygen -t ed25519 -C "filezilla" ssh-copy-id USER@VPS_IP
Dans FileZilla, ouvrez Édition > Paramètres > Connexion > SFTP > Ajouter un fichier de clé et choisissez votre clé privée (le fichier sans .pub). FileZilla peut proposer de la convertir à son format : acceptez. Ne partagez jamais la clé privée.
3. Enregistrer la connexion dans le Gestionnaire de sites
- Ouvrez Fichier > Gestionnaire de sites et cliquez sur Nouveau site.
- Protocole : SFTP - SSH File Transfer Protocol.
- Hôte :
VPS_IP, Port :22. - Type d'authentification : Normale pour un mot de passe, ou Fichier de clé pour une clé.
- Utilisateur :
USER. Dans l'onglet Avancé, définissez le dossier distant par défaut, par exemple/var/www/example.com. - Cliquez sur Connexion. Le site est mémorisé pour la prochaine fois.
Évitez d'enregistrer des mots de passe sur un ordinateur que vous ne maîtrisez pas.
4. Régler propriétaire et permissions des fichiers web
Les fichiers envoyés appartiennent souvent au mauvais utilisateur, ce qui provoque des erreurs 403 ou 500. Donnez le dossier web à votre utilisateur et laissez le serveur web le lire.
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 {} \;
Sur AlmaLinux et Rocky, le groupe du serveur web est apache au lieu de www-data. Les dossiers où l'application doit écrire (uploads, cache) peuvent passer en 775, avec le groupe du serveur web comme groupe propriétaire. N'utilisez jamais chmod -R 777. Dans FileZilla, vous pouvez aussi faire un clic droit sur un fichier puis Permissions du fichier.
5. Facultatif : un utilisateur SFTP seul, enfermé dans un dossier
Pour donner à un client l'accès à un seul dossier sans shell, utilisez un chroot. Le dossier chroot lui-même doit appartenir à root et ne pas être modifiable par un autre, sinon sshd refuse la connexion.
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
Ajoutez ce bloc à la fin de /etc/ssh/sshd_config :
INI1Match Group sftpusers 2 ChrootDirectory /var/sftp/%u 3 ForceCommand internal-sftp 4 AllowTcpForwarding no 5 X11Forwarding no
Testez la syntaxe avant de recharger, et gardez votre session SSH ouverte jusqu'à ce qu'une nouvelle connexion fonctionne.
Bashsshd -t systemctl reload ssh
Le service s'appelle ssh sur Ubuntu et Debian, et sshd sur AlmaLinux et Rocky. L'utilisateur restreint arrive dans /files et ne voit rien d'autre.
Vérification
Testez depuis un terminal avant d'incriminer FileZilla :
Bashsftp USER@VPS_IP sftp> pwd sftp> put test.txt sftp> ls -l
Envoyez ensuite un fichier avec FileZilla et vérifiez son propriétaire avec ls -l /var/www/example.com.
Dépannage
- Connexion refusée ou délai dépassé : vérifiez que sshd tourne (
systemctl status ssh), que le port est ouvert dans le pare-feu et que vous avez bien choisi SFTP, pas FTP. - Permission denied (publickey) : la clé n'est pas dans
~/.ssh/authorized_keysou les permissions sont mauvaises. Corrigez avecchmod 700 ~/.sshetchmod 600 ~/.ssh/authorized_keys. - Utilisateur chrooté déconnecté juste après la connexion : le dossier chroot n'appartient pas à root ou est modifiable par le groupe. Cherchez « bad ownership or modes for chroot directory » dans
journalctl -u ssh. - Envoi impossible, permission refusée sur un dossier : l'utilisateur ne possède pas la cible. Relancez les commandes
chownetchmodde l'étape 4.
✅ Vous pouvez maintenant transférer vos fichiers en toute sécurité vers votre VPS Linux avec FileZilla.