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

时间:2017-10-03 21:20:18

标签: node.js file-upload sftp pgp

我一直致力于使用他发给我的asc文件中的公共PGP密钥将文件上传到合作伙伴的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站点,并获得一条消息,即hostkey算法是ssh-dss 1024以及SHA256和MD5指纹。我不确定这是否有用。

是否有人有.asc文件的经验以及它们如何用于建立SFTP连接?

编辑:我尝试使用带有以下代码的npm包sftp-upload

    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。

1 个答案:

答案 0 :(得分:4)

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

[\r\n]*