Ошибка передачи файла из 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');
});
0 ответов
В 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
.