从NodeJS访问SFTP

dm7nw8vv  于 2023-03-12  发布在  Node.js
关注(0)|答案(2)|浏览(208)

我有一个需要,我必须打开与服务器的SFTP连接,从那里复制一个文件到本地。
为此,我尝试使用安装node-sftp模块

npm install node-sftp

它没有开箱即用,我不得不将npm安装的sftp.js文件替换为github存储库中的文件:https://github.com/ajaxorg/node-sftp
(npm版本使用的是TTY,github版本使用的是PTY。我不确定它们是什么)
启动服务器并调用代码后,我在控制台中看到了这一点。

launching: sftp -o Port=22 jash@xxx.63.xxx.49
listening...

控制台在这里挂起。我正在尝试在连接打开后打印当前目录中的所有文件。
这是密码

var http = require('http');
var Sftp = require('node-sftp');
var port = process.env.PORT || 1337;
var msgHandler = function(request, response) {
    var options = {
        host:"xxx.63.xxx.49",
        username:"jash",
        password:"mypassword",
        port:22
    };
    var conn = new Sftp(options,function(err){
       console.log(err);
    });
    conn.cd(".", function(err) {
        console.log(err);
        conn.ls(".", function(err, res) {
            console.log(res[0].path);
        });
    });
    console.log("listening...");
}

http.createServer(msgHandler).listen(port);

凭据很好,我在SecureCRT中使用了它们,并且能够登录。

esbemjvw

esbemjvw1#

Sftp()的第二个参数(function(err)...)是你想放置conn.cd(...代码的地方。它(第二个参数)是一个一旦连接建立就被调用的函数。当然要确保检查err

ee7vknir

ee7vknir2#

您需要在命令后使用exec()方法。

conn
    .cd(".")
    .ls()
    .exec(
      function(err, res) { 
        console.log(res.data)
      }
    );

相关问题