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

问题描述 投票:2回答:2

我有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:\Dev\my-app\node_modules\basic-ftp\dist\FtpContext.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库。

javascript node.js reactjs ftp ftps
2个回答
1
投票

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

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

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


0
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.