Ошибка передачи файлов из Windows в Linux с использованием ssh2: ssh: не удалось разрешить имя хоста C: имя или служба неизвестны

Я пытаюсь отправить файл с компьютера Windows на сервер Linux, используя ssh2 в JavaScript, sftp не работает, поэтому я использую exec и указываю команду scp, но получаю сообщение об ошибке ниже.

STDERR: ssh: не удалось разрешить имя хоста C: имя или служба не известны

var Connection = require('ssh2').Client;
    var c = new Connection();

    c.on('connect', function () {
        console.log('Connection :: connect');
    });
    c.on('ready', function () {
        console.log('Connection :: ready');
       c.exec('scp -r C:/myFolder/133.DAT serverFilePath', function(err, stream) {
                if (err) throw err;
                stream.on('close', function(code, signal) {
                  console.log('Stream :: close :: code: ' + code + ', signal: ' + signal);
                  c.end();
                }).on('data', function(data) {
                  console.log('STDOUT: ' + data);
                }).stderr.on('data', function(data) {
                  console.log('STDERR: ' + data);
                });
          });


    });
    c.on('error', function (err) {
        console.log('Connection :: error :: ' + err);
    });
    c.on('end', function () {
        console.log('Connection :: end');
    });
    c.on('close', function (had_error) {
        console.log('Connection :: close');
    });
    c.on('keyboard-interactive', function (name, instructions, instructionsLang, prompts, finish) {
        console.log('Connection :: keyboard-interactive');
        finish(['password']);
    });
    c.connect({
        host: 'hostname',
        // type: 'sftp',
        port: 22,
        username: 'username',
        password: 'pwd',
        readyTimeout: 99999,
        tryKeyboard: true,
        debug: console.log,

    }).then(()=>{
        console.log('Something to print');

    });

person Umesh Kumar    schedule 14.02.2019    source источник


Ответы (1)


Синтаксис scp для копирования file1 из host1 в каталог todir на локальном компьютере — scp host1:/path/to/file1 todir. Это сделано для того, чтобы было яснее, что C: в C:/myFolder/133.DAT понимается как исходное имя хоста, а не как идентификатор жесткого диска. Таким образом, ошибка: система не может разрешить C как имя хоста.

Теперь, как указать имя файла, расположенного на диске C:, зависит от того, где выполняется ваш код. Если ваш JS изначально работает в Windows, см. документацию используемой вами реализации scp. Если вы используете cygwin, попробуйте /cygdrive/c/path/to/file.

person mszmurlo    schedule 05.03.2019