0

我需要打开与服务器的 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 中使用它们并且能够登录。

4

1 回答 1

0

Sftp()(the )的第二个参数function(err)...是您要放置conn.cd(...代码的位置。它(所说的第二个参数)是一个函数,一旦建立连接就会被调用。确保检查err当然。

于 2013-08-26T12:37:41.227 回答