使用Node.js中的TLS / SSL隐式加密连接到FTP服务器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Node.js中的TLS / SSL隐式加密连接到FTP服务器相关的知识,希望对你有一定的参考价值。

我有Node.js应用程序,我试图连接到FTP服务器并列出FTP服务器文件夹中的文件夹/文件。

服务器配置有:TLS / SSL隐式加密

这是我的代码:

async function listFilesInFtpFolder() {
  const client = new ftp.Client()
  client.ftp.verbose = true;
  try {
      await client.access({
          host: ftpConfig.host,
          user: ftpConfig.user,
          password: ftpConfig.password,
          port: ftpConfig.port,
          secure: false
      });

      // ********************** NOTE **********************
      // The execution never reaches here, it gets stuck in the 
      // ... previous statement until it times out
      // ********************** NOTE **********************

      console.log('connected');
      console.log(await client.list())

  }
  catch(err) {
      console.log(err)
  }
  client.close()
}

出现此错误:

Listening on port 3001
Connected to 155.66.22.88:6610

Error: Timeout (control socket)
    at Socket.<anonymous> (C:Devmy-app
ode_modulesasic-ftpdistFtpContext.js:296:58)
    at Object.onceWrapper (events.js:298:28)
    at Socket.emit (events.js:209:13)
    at Socket._onTimeout (net.js:468:8)
    at listOnTimeout (internal/timers.js:531:17)
    at processTimers (internal/timers.js:475:7)

执行从未达到这些行:

      console.log('connected');
      console.log(await client.list())

它在等待访问方法时卡住,直到超时由于某些奇怪的原因,访问方法报告为“已连接”

注意,如果我使用WinSCP(https://winscp.net/)之类的程序连接到此FTP服务器,则可以连接并查看文件夹。但是出于某些奇怪的原因,我无法从nodejs连接。我也尝试了许多FTP库。

答案

似乎Node.js不支持隐式 TLS / SSL。

例如:https://github.com/mscdex/node-ftp/issues/153

您确定您的服务器不支持explicit TLS / SSL吗?

另一答案

假设您正在使用npm的ftp模块

根据文件https://www.npmjs.com/package/ftp#methodssecure选项接受混合类型,请尝试“隐式”

安全-混合-对于控制和数据连接加密均设置为true,'控制'仅用于控制连接加密,

或'implicit'用于隐式加密的控制连接(现代不建议使用此模式,但是通常使用端口990)默认值:false

以上是关于使用Node.js中的TLS / SSL隐式加密连接到FTP服务器的主要内容,如果未能解决你的问题,请参考以下文章

无法连接到本地 Node.js 安全 WebSocketServer

深入TLS/SSL协议

什么是SSL加密,什么是TLS加密

[翻译]在 Ubuntu 中使用 SSL/TLS 加密 FTP 连接

邮件TLS/SSL加密通信

什么是SSL加密,什么是TLS加密