5 votes

Problème de mode passif avec vsftpd sur Ubuntu (EC2)

J'ai suivi tous les guides mais je ne peux tout simplement pas me connecter via ftp.

...
230 Connexion réussie.
Le type de système distant est UNIX.
Utilisation du mode binaire pour transférer les fichiers.
200 Passage en mode binaire.
local : 21 distant : 21
229 Entrée en mode passif étendu (|||12028|)
550 Échec de l'ouverture du fichier.
221 Au revoir.

Je l'avais même dans iptables :

$ sudo iptables -L
Chaîne INPUT (politique ACCEPTER)
cible     prot opt source               destination
ACCEPTER     tcp  --  anywhere             anywhere             tcp dpts:12000:12100

J'ai les ports min et max définis dans vsftpd.conf sur 12000-12100 et les mêmes ports activés via la console AWS.

3voto

Luca Gibelli Points 2533

Dans votre cas spécifique, je constate que vous avez une erreur 550 qui me fait penser qu'il y a un problème de permission de fichier.

En général, la cause la plus courante pour l'échec du mode PASV lorsque vsftpd est en cours d'exécution sur EC2 est que vsftpd indique au client de se connecter à l'adresse IP privée de l'instance EC2 et que le client ne peut pas s'y connecter, pour des raisons évidentes.

Une solution possible est d'attribuer une adresse IP élastique à cette instance, puis de dire à vsftpd de s'annoncer avec cette adresse IP publique (par exemple 1.2.3.4) en ajoutant la ligne suivante à vsftpd.conf:

pasv_address=1.2.3.4

Revenons en arrière et examinons le fonctionnement du mode PASV:

  • Le client ouvre un canal de commande en se connectant au port 21 sur l'adresse IP publique de l'instance EC2, qui est mappée à l'adresse IP privée de l'instance par AWS lui-même.
  • Le client envoie une commande PASV à l'instance EC2 sur le canal ouvert
  • vsftpd sait qu'il écoute sur l'adresse IP privée de l'instance EC2 (l'adresse IP publique de l'instance est gérée par AWS et n'est pas visible depuis l'instance) et envoie une réponse au client contenant l'adresse IP privée de l'instance et un port aléatoire entre 12000 et 12100
  • Le client tente de se connecter à l'adresse IP et au port fournis par vsftpd et échoue

Avec pasv_address, vous forcez vsftpd à retourner l'adresse IP spécifiée lorsqu'une commande PASV est reçue, au lieu d'essayer de deviner l'adresse IP.

1voto

Julie Miner Points 11

Comme l'a dit @Luca Gibelli, c'est principalement un problème de permissions de fichier.

Serait-il mieux si vous postiez la liste des fichiers et vérifiez les permissions.

Mais je répondrais à cette question afin de fournir un petit détail sur l'utilisation de pasv_address sur EC2

Si vous utilisez une IP élastique

pasv_address={votre adresse IP publique}

sinon, il serait peut-être préférable d'utiliser

pasv_addr_resolve={votre domaine public ou DNS}

jetez un œil ici: https://www.gosquared.com/blog/fix-ftp-passive-mode-problems-on-amazon-ec2-instances

0voto

sp2danny Points 11

Certains routeurs bloquent le ftp classique sur le port standard. Passer à un port non standard a résolu le problème pour moi.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X