Подключитесь к FTP-серверу с помощью неявного шифрования TLS / SSL в Node.js - PullRequest
2 голосов
/ 19 октября 2019

У меня есть приложение Node.js, я пытаюсь подключиться к FTP-серверу и перечислить папки / файлы, которые находятся в папке FTP-сервера.

На сервере настроено: TLS / SSL ImplicitШифрование

Вот мой код:

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())

Itзастревает в ожидании метода доступа, пока не истечет время ожидания. По какой-то странной причине метод доступа сообщает «Подключено»

Обратите внимание, если я использую такую ​​программу, как WinSCP (https://winscp.net/), для подключения к этому серверу FTP, яЯ могу подключиться и увидеть папки. Но по какой-то странной причине я не могу подключиться с помощью nodejs. Я тоже перепробовал много FTP-библиотек.

Ответы [ 2 ]

1 голос
/ 19 октября 2019

Кажется, что Node.js не поддерживает неявный TLS / SSL.

См. Например:
https://github.com/mscdex/node-ftp/issues/153

Вы уверены, что вашсервер не поддерживает явный TLS / SSL?

0 голосов
/ 28 октября 2019

при условии, что вы используете ftp модуль из npm

в соответствии с документом https://www.npmjs.com/package/ftp#methods опция secure принимает смешанный тип, попробуйте 'implicit'

secure - mixed - установите значение true для шифрования как управляющего, так и шифрующего соединения, «control» только для шифрования управляющего соединения,

или «неявного» для неявно зашифрованного управляющего соединения (этот режим в современныхраз, но обычно использует порт 990) По умолчанию: false

...