Нет подходящего ключа хоста при подключении к sftp.webtrends.com

Я пытаюсь использовать облачные функции Firebase для отправки файла на ftp-сервер webtrends, но я столкнулся с проблемой, которую не могу решить. Поскольку я использую облачные функции Firebase, моя функция выполняется с сервера nodejs. Я использую этот пакет npm: https://www.npmjs.com/package/ssh2-sftp-client.

После чтения в Интернете и интерпретации журнала отладки я понял, что проблема в том, что сервер использует устаревший алгоритм шифрования (ssh-dss). Я прочитал здесь https://www.openssh.com/legacy.html, что ssh-dss является устаревшим и поэтому не поддерживается ssh2.

Большинство других решений, которые я нашел, говорят мне настроить конфигурацию ssh, но в этом случае у меня нет доступа к пульту дистанционного управления, и я не могу его настроить.

Вот код, который я использую для подключения:

const Client = require('ssh2-sftp-client');
const sftp = new Client();
sftp.connect({
  host: 'sftp.webtrends.com',
  port: '****', // omitted
  username: '****', // omitted
  password: '****', // omitted
  algorithms: {
    serverHostKeys: ['ssh-dss'],
  },
});

А вот и журнал отладки:

DEBUG: Local ident: 'SSH-2.0-ssh2js0.1.20'
DEBUG: Client: Trying sftp.webtrends.com on port **** ...
DEBUG: Client: Connected
DEBUG: Parser: IN_INIT
DEBUG: Parser: IN_GREETING
DEBUG: Parser: IN_HEADER
DEBUG: Remote ident: 'SSH-2.0-1.82_sshlib GlobalSCAPE'
DEBUG: Parser: IN_PACKET
DEBUG: Parser: IN_PACKETBEFORE (expecting 8)
DEBUG: Parser: IN_PACKETDATA
DEBUG: Parser: IN_PACKETDATAAFTER, packet: KEXINIT
DEBUG: Comparing KEXINITs ...
DEBUG: (remote) KEX algorithms: diffie-hellman-group14-sha1,diffie-hellman-
group-exchange-sha1,diffie-hellman-group1-sha1
DEBUG: (local) KEX algorithms: ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-
sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1
DEBUG: (local) Host key formats: ssh-rsa,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521
DEBUG: Outgoing: Writing KEXINIT
DEBUG: Parser: pktLen:484,padLen:11,remainLen:480
DEBUG: Outgoing: Writing DISCONNECT (KEY_EXCHANGE_FAILED)
DEBUG: KEX algorithm: diffie-hellman-group14-sha1
DEBUG: (remote) Host key formats: ssh-dss
DEBUG: No matching host key format

person Reel    schedule 07.03.2018    source источник


Ответы (2)


В параметрах конфигурации есть опечатка. Используйте эти настройки, как описано в документации, и это может сработать:

algorithms: {
  serverHostKey: ['ssh-dss'], // serverHostKey, without the 's'
},
person Rob    schedule 07.09.2018
comment
Большое тебе спасибо! Я на самом деле никогда не находил этого и решил это, отбросив файл и написав новый. Должно быть, сам не зная, исправил опечатку. - person Reel; 16.10.2018

Итак, если вы не можете настроить сервер и ssh2-sftp-client сообщает, что они не поддерживают ssh-dss, ваш единственный вариант - не использовать ssh2-sftp-client, а использовать другой пакет, поддерживающий ssh-dss.

Выполнив быстрый поиск в Google по запросу nodejs ftp client "ssh-dss", будет несложно найти тот, который поддерживает ssh-dss, например yocto-sftp

person Edo Akse    schedule 14.03.2018