node.js - 如何在 NodeJS 中使用 ASC 文件和用户名/密码通过 SFTP 上传文件

标签 node.js file-upload sftp pgp

我一直在执行一项任务,使用他发送给我的 asc 文件中的公共(public) PGP key 将文件上传到合作伙伴的 ftp 站点。 该文件看起来像这样(删除了大部分 key ):

      -----BEGIN PGP PUBLIC KEY BLOCK-----
      Version: PGP Desktop 10.2.1 (Build 4461)

      mQEN... ... ...=K8zL
      -----END PGP PUBLIC KEY BLOCK-----

我已经尝试了几个 SFTP Node 包,但似乎还没有任何效果。大多数示例使用 .rsa 文件,但我只提供了这个 .asc 文件。从我的研究中,我可以看到有些人使用过带有此扩展名的文件,但没有人完全解释如何使用。

我能够使用 Filezilla 连接到 FTP 站点,并收到一条消息,指出主机 key 算法是 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();

在运行代码时,出现以下错误: 错误:无法解析给定的 privateKey 值 我认为这意味着此 key 文件的格式不正确,无法用于 sftp_upload。

最佳答案

事实证明,SFTP 连接本身不需要 ASC 文件,而是仅用于在发送文件之前对其进行加密。我能够使用 Node 包 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');
    });

关于node.js - 如何在 NodeJS 中使用 ASC 文件和用户名/密码通过 SFTP 上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46553620/

相关文章:

sftp - 是什么原因导致SFTP中出现错误“无法规范化:没有这样的文件或目录”?

java - 启动应用程序时无法创建bean

node.js - 无法使用 Express Handlebars 在目录中查找 View

javascript - 如何从 promise 函数返回值

javascript - 如何在node.js程序中记录每个 "throw"?

jsf - fileUpload 不会在带有 JSF 2.2 的 PrimeFaces 3.5 中触发事件

node.js - 如何在 Node.js 中解压 gzip 文件

node.js - 使用 angular-file-upload 将文件上传到 Node 服务器

c# - 检查 HttpHostedFileBase 中的文件名是文件名还是文件路径

package - 无法通过 Sublime 3 Package SFTP 连接到 SFTP 服务器