Skip to content

Todo para WordPress, el desarrollo web — y mucho más

🚀 Error de SSL/TLS requerido en el canal de datos durante la conexión FTP: cómo solucionarlo

🚀 Error de SSL/TLS requerido en el canal de datos durante la conexión FTP: cómo solucionarlo

Usted se conecta a un servidor por FTP desde su editor de código, ingresa el host, usuario y contraseña, y recibe una línea roja como respuesta: SSL/TLS required on the data channel. ¿Le suena familiar? Este error ocurre cuando el servidor exige una conexión cifrada, pero el cliente intenta conectarse por FTP simple. Esto sucede especialmente en proveedores de hosting con certificados autofirmados.

Antes, este problema se resolvía en Atom mediante el plugin Remote FTP. Atom dejó de existir en diciembre de 2022, pero el error no ha desaparecido. Sigue presente en VS Code, FileZilla, Pulsar y cualquier cliente FTP que se conecte a un servidor con un certificado SSL autofirmado.

En este artículo, tres formas efectivas de sortear el error SSL/TLS required on the data channel: para Atom/Pulsar mediante .ftpconfig, para VS Code mediante la extensión SFTP y para clientes GUI como FileZilla. Además, una advertencia importante: cuándo rejectUnauthorized: false es una solución aceptable y cuándo es un agujero de seguridad.

💡 Resumen rápido:

  • Origen del error: el servidor requiere TLS, el cliente envía FTP simple y la conexión se corta en la fase del canal de datos.
  • .ftpconfig con rejectUnauthorized: false y secure: true es la solución para Atom y su fork Pulsar que funciona con el plugin Remote FTP.
  • En VS Code, la extensión SFTP de liximomo con el parámetro secure: true resuelve el mismo problema a nivel de configuración en sftp.json.
  • En FileZilla y otros clientes GUI, simplemente cambie el protocolo de FTP a FTPS (TLS explícito) y acepte el certificado manualmente.
  • Seguridad: rejectUnauthorized: false desactiva la verificación del certificado y solo es aceptable en servidores de desarrollo y entornos de prueba, nunca en producción.

De dónde viene el error SSL/TLS required on the data channel

El protocolo FTP funciona mediante dos canales: canal de control (comandos) y canal de datos (transferencia real de archivos). Cuando el servidor está configurado para FTPS (FTP sobre TLS), cifra ambos. Un cliente que intenta conectarse por FTP normal supera la autenticación en el canal de control, pero al intentar abrir el canal de datos, el servidor responde: 550 SSL/TLS required on the data channel.

La razón técnica está en la implementación de TLS del lado de Node.js (sobre el cual están construidos tanto Remote FTP para Atom como la extensión SFTP de VS Code). Node.js valida los certificados SSL por defecto. Un certificado autofirmado no supera esta validación y la conexión se corta. La solución: indicar explícitamente al cliente que no verifique el certificado (rejectUnauthorized: false), o cambiar a FTPS explícito con aceptación manual del certificado.

Solución 1:.ftpconfig correcto para Atom y Pulsar

Atom se descontinuó oficialmente en diciembre de 2022, pero su fork Pulsar (antes Atom) es totalmente compatible con los paquetes de Atom, incluido Remote FTP. La solución consiste en especificar las secureOptions correctas en .ftpconfig.

Cree (o edite) el archivo .ftpconfig en la raíz del proyecto:

1{
2 "protocol": "ftp",
3 "host": "your.server.com",
4 "port": 21,
5 "user": "login",
6 "pass": "password",
7 "promptForPass": false,
8 "remote": "/",
9 "secure": true,
10 "secureOptions": {
11 "rejectUnauthorized": false
12 },
13 "connTimeout": 10000,
14 "keepalive": 10000
15}

Parámetros clave:

  • secure: true habilita TLS tanto para el canal de control como para el de datos;
  • rejectUnauthorized: false desactiva la verificación del certificado (Node.js deja de exigir un certificado válido del servidor);
  • port: 21 es el puerto estándar para FTP; para FTPS mediante TLS implícito, use el puerto 990 y protocol: "ftps".

Después de guardar .ftpconfig, reconéctese al servidor y el error SSL/TLS required on the data channel desaparecerá.

Solución 2: configurar la extensión SFTP en VS Code

La extensión más popular para FTP/SFTP en VS Code es SFTP de liximomo (más de 1.3 millones de instalaciones). El error 550 SSL/TLS required on the control channel se discute en la incidencia #872.

Después de instalar la extensión, ejecute Ctrl+Shift+PSFTP: Config y se abrirá el archivo sftp.json. Configúrelo de la siguiente manera:

1{
2 "name": "My server",
3 "host": "your.server.com",
4 "protocol": "ftp",
5 "port": 21,
6 "secure": true,
7 "username": "login",
8 "password": "password",
9 "remotePath": "/",
10 "uploadOnSave": true
11}

El parámetro secure: true es un equivalente directo de rejectUnauthorized: false de .ftpconfig. Le indica a la extensión que use FTPS y no corte la conexión al encontrarse con un certificado autofirmado.

Si el servidor usa FTPS implícito (puerto 990), cambie protocol a ftps y port a 990. Guarde sftp.json, ejecute SFTP: Download Project y la extensión se conectará y descargará el contenido de remotePath.

Solución 3: FileZilla y otros clientes GUI

En los clientes GUI, el problema se resuelve de forma aún más sencilla a nivel de interfaz. En FileZilla:

  • Abra el Gestor de sitios (Ctrl+S).
  • Seleccione la conexión y en el campo Protocolo cambie de FTP a FTP over TLS (explicit).
  • En la primera conexión, FileZilla mostrará un diálogo con la huella del certificado; haga clic en Confiar en este certificado y marque "Confiar siempre".

El mismo principio funciona en WinSCP, Cyberduck y cualquier cliente FTP moderno: especifique explícitamente el protocolo FTPS y acepte el certificado manualmente. Sin archivos de configuración, solo la interfaz.

Cuándo NO debe desactivar la verificación del certificado

rejectUnauthorized: false es un debilitamiento deliberado de la seguridad. Le está diciendo al cliente: "acepte CUALQUIER certificado, incluso uno falsificado". Esto es aceptable en tres casos:

  • Un servidor de desarrollo local o entorno de staging sin acceso desde internet.
  • Su propio VPS, donde sabe exactamente de dónde proviene el certificado.
  • Un entorno de pruebas detrás de una VPN corporativa.

En un servidor de producción con un certificado autofirmado, es mejor dedicar 15 minutos a configurar Let's Encrypt, un certificado SSL gratuito que todos los clientes reconocen sin necesidad de rejectUnauthorized: false.

Vea este breve tutorial sobre la conexión SFTP en VS Code, que cubre todos los pasos desde la instalación de la extensión hasta la primera conexión al servidor:

⁉️🤔 Preguntas frecuentes

El error persiste después de secure: true; ¿qué más debo revisar?

Primero, verifique el puerto. FTPS explícito funciona en el puerto 21, implícito en el 990. Si el administrador del servidor exige FTPS implícito pero usted especificó protocol: "ftp" con port: 21, la conexión no se establecerá por más que modifique secureOptions. Revise el panel de su hosting o pregunte al administrador qué modo FTPS usa el servidor.

¿Puedo usar SFTP en lugar de FTPS?

Sí, y esta es la opción preferida. SFTP (SSH File Transfer Protocol) funciona sobre SSH, no sobre FTP, por lo que los problemas de certificados SSL simplemente no existen para él. Si el servidor proporciona acceso SSH, use SFTP en lugar de FTPS. En el mismo .ftpconfig, simplemente cambie protocol a sftp y port a 22.

Atom ha sido descontinuado; ¿Remote FTP sigue funcionando?

El paquete Remote FTP está disponible en el repositorio de Atom, pero el editor en sí no se actualiza desde diciembre de 2022 y contiene vulnerabilidades conocidas. GitHub incluso revocó los certificados de firma de código de Atom en enero de 2023. Si Atom aún se inicia en su equipo, migre al fork Pulsar, que utiliza los mismos paquetes y configuraciones sin cambios.

¿Qué hay de VS Code Remote SSH?

Remote SSH es una excelente alternativa a las conexiones FTP si el servidor ejecuta Linux y tiene acceso SSH. Trabaja con los archivos directamente, sin sincronización ni complicaciones de certificados. Pero para hosting compartido donde SSH está cerrado y el acceso es solo por FTP, las soluciones de este artículo siguen siendo pertinentes.

El error SSL/TLS required on the control channel (no en el canal de datos): ¿es lo mismo?

Sí, la única diferencia es en qué canal se cortó la conexión. El canal de control gestiona los comandos (autenticación, navegación), el canal de datos gestiona la transferencia de archivos. El servidor puede requerir TLS en cualquiera de ellos. La solución es idéntica: secure: true + rejectUnauthorized: false en la configuración.

El error persiste: lista de verificación final

Repase estos puntos; uno de ellos resolverá el problema:

  • Protocolo: ¿está establecido secure: true en la configuración (.ftpconfig o sftp.json)?
  • Puerto: FTPS explícito = 21, implícito = 990, SFTP = 22. Verifique según la configuración del servidor.
  • rejectUnauthorized: un certificado autofirmado NO pasará la validación de Node.js sin esta opción.
  • Cliente GUI: ¿cambió el Gestor de sitios a FTP over TLS (explicit) y aceptó manualmente el certificado?
  • SFTP en lugar de FTPS: si tiene acceso SSH, olvídese de FTP y cambie a SFTP.

Si ha probado todo y el error persiste, lo más probable es que el servidor esté configurado para FTPS implícito (puerto 990), mientras que el cliente se conecta al puerto 21. Consulte con su proveedor de hosting el modo y puerto requeridos.

Este error no es un fallo del editor, sino una característica del handshake TLS con un certificado autofirmado. Tras una configuración adecuada, desaparece en cualquier cliente: ya sea en Atom de 2018, Pulsar de 2026 o VS Code.