如何通过在节点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); }); 

请帮助。

'node-ssh'包装似乎不提供'结束'function,或者访问底层ssh2连接对象的方式。 这让你有几个select:

分叉源代码 ,编写一个'end'方法,并向node-ssh包装器发出pull请求,以便将来的用户可以使用wrapper并结束连接。 或者,您可以创build问题,并等待其他人在他们认为有必要时创buildfunction。

改为使用底层的ssh2库。 它暴露了更多的function给你,包括一个'结束'方法,closures连接,但使用callback而不是承诺,这将需要你重构你的代码。

另外,您可以将以下内容添加到您的代码中,尽pipe这是非常不推荐的 ,因为它与您不拥有的原型相混淆,并可能会破坏未来版本的node-ssh模块的兼容性:

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

你可以调用ssh.end()来closures连接。

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

“注意:如果ssh2对象的任何内容没有被执行,并且我比我应该花更多的时间,你总是可以使用MySSH.Connection.close()

问题#9

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

 ssh.end(); 

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