【问题标题】:nodejs - ssh2 server connection is not giving any output or errorsnodejs - ssh2 服务器连接没有给出任何输出或错误
【发布时间】:2021-07-22 23:31:02
【问题描述】:

我对 nodejs 还很陌生。我正在尝试使用主机、端口、用户名和密码简单地连接到下面的网络服务器,并获得如下所示的正常运行时间响应。从命令行执行文件并没有给我任何输出,它只是给了我一个空的命令行。删除任何 ip、端口或用户名/密码都会给我带来错误。我做错了什么?

 var Client = require('ssh2').Client;

        var conn = new Client();
        conn.on('ready', function() {
          console.log('Client :: ready');
          conn.exec('uptime', function(err, stream) {
            if (err) throw err;
            stream.on('close', function(code, signal) {
              console.log('Stream :: close :: code: ' + code + ', signal: ' + signal);
              conn.end();
            }).on('data', function(data) {
              console.log('STDOUT: ' + data);
            }).stderr.on('data', function(data) {
              console.log('STDERR: ' + data);
            });
          });
        }).connect({
          host: '192.168.100.100',
          port: 2122,
          username: '!@#!@#!@',
          password: '!@#!@#!'
        });


    // example output: 
    // Client :: ready 
    // STDOUT:  17:41:15 up 22 days, 18:09,  1 user,  load average: 0.00, 0.01, 0.05 
    // 
    // Stream :: exit :: code: 0, signal: undefined 
    // Stream :: close 

【问题讨论】:

  • npm ls 显示什么?它显示ssh2-streams v0.1.11,还是该模块的旧版本?如果它显示 v0.1.11,您能否在您的 connect() 选项中设置 debug: console.log 并将输出发布到 gist 中或粘贴到某处?

标签: node.js ssh


【解决方案1】:

您需要在任何其他处理程序之前将'error' 事件处理程序附加到实际的连接对象。

var Client = require('ssh2').Client;
var conn = new Client();

conn.on('error', function(err) {
  console.log('SSH - Connection Error: ' + err);
});

conn.on('end', function() {
  console.log('SSH - Connection Closed');
});

conn.on('ready', function() {
  // code to work with SSH
});

conn.connect({
  host: '192.168.100.100',
  port: 2122,
  username: '!@#!@#!@',
  password: '!@#!@#!'
});

【讨论】:

  • 我试过了,没有错误但没有输出。我假设连接已建立,但输出是一个空白命令行并返回到 cmd 中的下一行
  • @LisaA 只是让你知道,我遇到了类似的问题,ssh2 在我停止连接对象上的方法链接之前没有做任何事情。您是否尝试过像我在上面的代码示例中所做的那样设置您的代码?例如,无论出于何种原因,当我继续做conn.on('').on('').connect() 时,什么都不会发生。当我像上面一样将每个功能分别分解到conn 时,它起作用了。
  • conn.on('error', function(err) { console.log('SSH - Connection Error: ' + err); }); conn.on('ready', function() { console.log('Client :: ready'); conn.exec('uptime', function(err, stream) { if (err) throw err; stream.on( 'close', function(code, signal) { console.log('Stream :: close :: code: ' + code + ', signal: ' + signal); conn.end(); }); stream.on( '数据', 函数(数据){ console.log('STDOUT: ' + 数据); }); }); });
  • 我把它弄坏了,还是没有运气。
  • @LisaA,刚刚在您的连接选项中查看了您的端口。你确定你应该通过2122 连接吗?通常 SSH 在端口 22 上运行。
【解决方案2】:

我遇到了同样的问题。执行以下操作解决了它-

const { Client } = require('ssh2');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-28
    • 2020-01-22
    • 2022-08-21
    相关资源
    最近更新 更多