任何人都可以帮助我,如何在节点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);
});
请帮助。
答案 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()
”
然后他做了一个提交,现在你有了方法!
ssh.end();