javascript - Node.js 错误:使用 ssh2 读取 ECONNRESET
问题描述
我正在尝试使用 npm 中的 ssh2 来设置 ssh 连接并远程登录到机器。该代码适用于 Windows 到 Linux/MacOS 的连接,但对于 Windows 到 Windows 的连接失败(已附上错误屏幕截图)。我确实找到了与可能导致问题的代理和代理转发参数相关的内容,但找不到解决方案。节点版本:8.11.2
任何帮助将不胜感激!谢谢!代码如下:
app.get("/",function(req,res)
{
var conn = new Client();
conn.on('ready', function()
{
console.log('Client :: ready');
conn.exec('systeminfo', function(err, stream)
{//system_profiler SPHardwareDataType, systeminfo
if (err) console.log(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: '127.0.0.1',
port: 22,
username: 'inspiron',
privateKey: require('fs').readFileSync('C:/Users/inspiron/Downloads/private_key.ppk')
});
res.send(str);
});
这是错误消息:
解决方案
我也有类似的问题。
events.js:183
throw er; // Unhandled 'error' event
^
Error: read ECONNRESET
at _errnoException (util.js:992:11)
at TCP.onread (net.js:618:25)
虽然我增加了一些延迟,但它以某种方式起作用。
stream.on('close', function(code, signal){
console.log('Stream :: close :: code: ' + code + ', signal: ' + signal);
//extra lines of code here..
conn.end();
}
添加一些延迟或try-catch语句;还有“stream.on('data', function(data) {...
stream.on('close', function(code, signal){
console.log('Stream :: close :: code: ' + code + ', signal: ' + signal);
//var newvar = oldvar;
setTimeout(function() {
conn.end();
//use the newvar here..
//extra lines of code..
},100);
}
推荐阅读
- mysql - 我的连接表中的某些结果为 NULL,为什么会这样?
- android - 从硬件条形码扫描仪读取值
- r - Esri 要素图层未加载到传单地图中
- c# - ParallelEnumerable.Zip() 是如何工作的,为什么调用 AsEnumerable() 时行为会发生变化?
- reactjs - 表单作为具有反应的功能组件
- java - Spring Integration 流程失去了订阅者
- regex - 用于获取 Scala 中行的最后一个分隔符之后的数字的正则表达式
- typescript - 如何在 TypeScript 中仅导出/导入类型定义
- python - Python:如何在类的方法中调用类的新实例
- wso2 - 在不重新启动 wso2ei(集成器)服务器的情况下更新自定义调解器 jar 文件