node.js远程窗口ssh上的连接错误ECONNRESET

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了node.js远程窗口ssh上的连接错误ECONNRESET相关的知识,希望对你有一定的参考价值。

我在远程Windows服务器上安装了openssh并使用putty.Now我想通过node.js连接到远程服务器,因此安装了一个包“simple-ssh”。这个包也可以正常使用远程linux服务器,但抛出了Windows服务器的错误。

这是我的代码文件,

var SSH = require('simple-ssh');
var ssh;
ssh = new SSH({
            host: 'XXX.XXX.XX.101',
            user: 'username',
            pass: 'password'
        });

var command = 'typeperf "\Processor(_Total)\% Processor Time"'

console.log('command :'+command)

ssh.exec(command, {
    out: function(stdout) {
        console.log(stdout);
    }
}).start();

ssh.on('error', function(err) {
            console.log('something went wrong.');
            console.log(err);           
            ssh.end();
        });

以下错误我进入控制台,

command :typeperf "Processor(_Total)\% Processor Time"
something went wrong.
{ Error: read ECONNRESET
    at TCP.onStreamRead (internal/stream_base_commons.js:111:27)
  errno: 'ECONNRESET',
  code: 'ECONNRESET',
  syscall: 'read',
  level: 'client-socket' }

请注意,它适用于我执行putty会话或当我放var command = 'ping -t XXX.XXX.XX.101',但没有与var command = 'typeperf "\Processor(_Total)\% Processor Time"'通过node.js脚本。请帮助解决这个问题,因为我已经挣扎了几个星期。

提前谢谢了。

答案

我自己解决了这个问题。经过大量的努力和打击和试验后,我才知道这主要是因为在输入字符串中处理双引号。我通过在双引号之前放置转义字符并解决问题来解决这个问题。

我变了

var command = 'typeperf "\Processor(_Total)\% Processor Time"'

var command = 'typeperf \"\Processor(_Total)\% Processor Time\"'

它奏效了。 :-)

以上是关于node.js远程窗口ssh上的连接错误ECONNRESET的主要内容,如果未能解决你的问题,请参考以下文章

在CMD窗口中进行SSH远程连接时出现的错误

Azure 上的 Node.js 远程调试

windows上SSH服务连接远程主机失败

Node.js WebStorm 远程调试不起作用(没有 SSH 隧道)

VSCode 远程 SSH 连接失败

如何防止为远程 ssh 连接启动新的 VS Code 窗口