生成要在我的电子应用程序中使用的密钥对
我正在电子应用程序中使用此代码连接到需要收集一些数据的sftp服务器。我没有列出/ out文件夹中的文件的问题,但是无法获取sftp文件。我不确定这是否是我的代码有问题,尽管我认为可能不是问题,还是公共/私有密钥对本身或代码指向私有密钥的方式有问题。我要为sftp提供程序提供一个新的密钥对,我的主要问题是生成密钥对的最佳方法是,将公钥发送给第三方提供商并将私钥存储在电子应用程序中?
let Client = require('ssh2-sftp-client');
let sftp = new Client();
var root = '/out';
var today = new Date();
var mon = ((today.getMonth()+1) < 10)? "0" + (today.getMonth()+1) : (today.getMonth()+1);
var date = (today.getDate() < 10)? "0" + today.getDate() : today.getDate();
var fileDate = mon + date;
sftp.connect({
host: '<server-address>',
port: 2222,
username: 'XXXXXXXX',
password: 'xxxxxxxx',
privateKey: fs.readFileSync(path.join(__dirname, '../rsa/<file-name-here>.pem'))
})
.then(() => {
return sftp.list(root, 'SN5M' + fileDate);
})
.then((fileInfo) => {
if (fileInfo) {
var filePath = root + '/' + fileInfo[fileInfo.length - 1].name;
return sftp.get(filePath).then((file) => {
console.log(file);
event.returnValue = file;
sftp.end();
})
.catch((err) => {
console.log('File get error', err);
event.returnValue = err;
sftp.end();
});
}
})
.catch((err) => {
console.log('File info error', err);
event.returnValue = err;
sftp.end();
});
回答如下:尝试一下,看看是否有效
'get'返回(String | Stream | Buffer)。
let dst = fs.createWriteStream('/local/file/path/data.txt');
sftp.get(filePath,dst)
参考https://www.npmjs/package/ssh2-sftp-client#orga0dfcd5