如何在节点js中使用node-ssh断开ssh连接

时间:2015-05-22 09:19:24

标签: node.js

任何人都可以帮助我,如何在节点js中使用node-ssh模块断开ssh连接。还有如何处理错误。

我的代码是

 driver = require('node-ssh');

    ssh = new driver({
              host: '192.168.*.*',
              username: 'user',
              password: 'password',
              privateKey : require('fs').readFileSync('/tmp/my_key')
            });

    ssh.connect().then(function() {
           /*
       some code
        */

            },function(error) {
                console.log(error);

    });

请帮助。

3 个答案:

答案 0 :(得分:7)

使用dispose方法。例如:

const node_ssh = require('node-ssh');
const ssh = new node_ssh();

ssh.connect({
  host: 'XXX',
  username: 'YYY',
  privateKey: 'ZZZ'
}).then(resp => {
  console.log(resp);
  ssh.dispose();
});

答案 1 :(得分:5)

' node-ssh'包装似乎没有提供一个结束'函数,或访问底层ssh2连接对象的方法。这给你留下了几个选择:

分叉source,写一个'结束'方法,并向node-ssh包装器发出拉取请求,以便将来的用户可以使用包装器并结束连接。或者,您可以创建issue并等待其他人在他们认为必要时创建功能。

请使用基础ssh2库。它为您提供了更多功能,包括“结束”功能。方法,关闭连接,但使用回调而不是promises,这将要求您重构代码。

此外,您可以在代码中添加以下内容,但这是非常不推荐,因为它弄乱了您不拥有并可能破坏兼容性的原型与未来版本的node-ssh模块:

driver.prototype.end = function() {
  this.Connection.end()
  this.Connected = false
}

然后,您可以致电ssh.end()关闭连接。

答案 2 :(得分:2)

我直接询问了图书馆的创建者,在这里我报告答案:

“注意:如果没有实现ssh2对象的任何内容,并且我花费的时间比我应该多,那么您总是可以使用MySSH.Connection.close()

Issue#9

然后他做了一个提交,现在你有了方法!

ssh.end();