2015-05-22 64 views
5

任何人都可以帮助我,如何断开使用节点js中的node-ssh模块的ssh连接。另外如何处理错误。如何在节点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); 

    }); 

请帮助。

回答

4

'node-ssh'包装似乎不提供'结束'功能,或访问基础ssh2连接对象的方式。这给你留下了几个选择:

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

改为使用底层的ssh2库。它向你展示了更多的功能,包括'结束'方法来关闭连接,但使用回调而不是承诺,这将需要你重构你的代码。

此外,您可以添加以下代码,虽然这是非常严重不推荐,因为它与你没有自己,并可能破坏与节点-SSH模块的未来版本的兼容性原型搞乱:您可以拨打ssh.end()关闭连接。

+0

是的这是现在的工作。非常感谢科迪海因斯 – selvan

2

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

“注意:如果是互斥对象的任何事情没有实现,我花更多的时间比我要,你总是可以使用MySSH.Connection.close()

Issue#9

然后,他已经做了承诺,现在你有你的方法!

ssh.end(); 
2

使用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(); 
});