如何在NodeJS中使用ASC文件和用户名/密码使用SFTP上传文件

我一直在做一个任务,使用一个公共的PGP密钥在他发给我的一个ascfile upload一个文件到合作伙伴的ftp站点。 该文件看起来像这样(与大部分的关键审查):

-----BEGIN PGP PUBLIC KEY BLOCK----- Version: PGP Desktop 10.2.1 (Build 4461) mQEN... ... ...=K8zL -----END PGP PUBLIC KEY BLOCK----- 

我已经尝试了几个SFTP节点包,但似乎没有工作。 大多数示例使用.rsa文件,但我所提供的是.asc文件。 从我的研究中,我可以看到有些人使用这个扩展名的文件,但是没有人完全解释如何。

我可以使用Filezilla连接到FTP站点,并得到一个消息,即hostkeyalgorithm是ssh-dss 1024以及SHA256和MD5指纹。 我不确定这是否有帮助。

有没有人有.asc文件的经验,以及如何使用它们来build立一个SFTP连接?

编辑:我已经尝试使用npm包sftp上传与下面的代码:

  var SftpUpload = require('sftp-upload'), fs = require('fs'); var options = { host:'ftp.partnersite.com', username:'TempUserName', path: './CSV', remoteDir: '/', privateKey: fs.readFileSync('pgpkeyfile.asc'), }, sftp = new SftpUpload(options); sftp.on('error', function(err) { throw err; }) .on('uploading', function(progress) { console.log('Uploading', progress.file); console.log(progress.percent+'% completed'); }) .on('completed', function() { console.log('Upload Completed'); }) .upload(); 

在运行代码,我得到了以下错误: Error: Unable to parse given privateKey value ,我认为这意味着这个密钥文件是不正确的格式sftp_upload。

事实certificate,SFTP连接本身并不需要ASC文件,而是只在发送文件之前用于encryption文件。 我能够使用节点包ssh2-sftp-client连接到FTP站点并使用以下代码上载文件:

  sftp.connect({ host: 'ftp.site.com', port: '22', username: 'myusername', password: 'mypassword', algorithms: { serverHostKey: [ 'ssh-dss' ], kex: ['diffie-hellman-group14-sha1'], cipher: ['aes128-cbc'] } }).then(() => { sftp.put('./CSV/myspreadsheet.csv', '/myspreadsheet.csv', false); }).then((data) => { console.log(data, 'the data info'); }).catch((err) => { console.log(err, 'catch error'); });