FTP "425 no se puede abrir la conexión de datos" solo ocurre cuando se utiliza el símbolo del sistema

8

Toda mi computadora está detrás de un solo enrutador. Tengo un servidor FileZilla ejecutándose en uno de ellos. Estoy tratando de automatizar una carga en el servidor usando un script por lotes y el ftp.exe incorporado de Windows. He configurado un servicio DNS dinámico para poder acceder a mi servidor desde fuera del enrutador y he configurado el reenvío de puertos en el enrutador a mi servidor. Puedo conectar y transferir muy bien usando Google Chrome, el Explorador de Windows y el cliente FileZilla. Sin embargo, cada vez que intento usar ftp.exe (ya sea manualmente o en secuencia de comandos por lotes) puedo conectarme al servidor, pero si intento hacer algo que abra una conexión de datos (LIST, STOR o RETR) me sale el siguiente error: 425 No se puede abrir la conexión de datos. He permitido ftp.exe en los firewalls de ambas computadoras. ¿Alguna idea de lo que está sucediendo o cómo podría solucionarlo? No necesito usar ftp.

EDITAR Sé que mi ISP bloquea muchos puertos, incluidos 21 y varios más en ese rango. Todo esto está configurado en el puerto 2121, con los puertos pasivos configurados para ser 2122-2142, todos estos se han reenviado en el enrutador. ¿Quizás ftp.exe solo usará un cierto puerto para la conexión de datos, que mi ISP bloqueó? Si es así, ¿cómo cambiaría esto?

Garrett
fuente

Respuestas:

5

El FTP activo regular usa una conexión de datos iniciada por el servidor por separado para las transferencias y solo usa la conexión del puerto 21 normal como canal de control. Sin embargo, cuando el cliente está detrás de un firewall, es probable que el firewall bloquee esta conexión. Supongo que Chrome, Explorer, FireZilla, etc. son lo suficientemente inteligentes como para probar el modo pasivo, en el que la conexión original iniciada por el cliente se usa como canal de control y de datos.

Parece que el cliente FTP CLI predeterminado de Windows no admite el modo pasivo. Por lo tanto, deberá cambiar a NcFTP . Alternativamente, y creo que probablemente la mejor opción, es usar SFTP en su lugar. FTP es inseguro y realmente solo se debe usar en LAN. SFTP está completamente encriptado y también solo usa un solo canal para datos y comandos. Si necesita un cliente CLI SFTP, PSFTP es una buena opción.

Lèse majesté
fuente
Ya lo he intentado sin suerte
Garrett
@Garrett: Hrmm ... parece que el artículo del blog al que me vinculé está equivocado, y el cliente FTP CLI predeterminado no admite el modo pasivo. En ese caso, tendrá que cambiar los clientes FTP. NcFTP es una opción, y definitivamente es compatible con el modo pasivo.
Lèse majesté
Observé la solicitud / respuesta mientras realizaba la transferencia a través del Explorador de Windows, utilicé la cotización para enviar manualmente los mismos comandos, pero aún recibí el mismo error
Garrett
@Garrett: ¿Pensé que Windows Explorer funcionaba? Si el cliente no admite el modo pasivo, no le importará que le cambie al servidor.
Lèse majesté
¿Es compatible con la línea de comandos, y es un exe independiente?
Garrett
0

Windows FTP CLI admite el modo PASIVO. Use "quote pasv" para ingresar al modo pasivo.

George Rios
fuente
2
No creo que realmente funcione . ¿Puede confirmar que quote pasvrealmente hace algo en ftp.exe y no es solo un comando ficticio?
Lèse majesté
0

Yo tuve este problema también. La solución fue detener el firewall del antivirus (en mi caso, el McAfee), estaba bloqueando los puertos de FTP.

Sfalcini
fuente
Eso no es realmente una solución.
ivan_pozdeev