2013-08-26 37 views
0

我有一个需要,我必须打开一个服务器的SFTP连接,从那里复制文件到本地。从NodeJS访问SFTP

为此,我曾试图安装使用

npm install node-sftp 

节点SFTP模块它没有开箱的,我不得不更换已安装的NPM与github上的sftp.js文件库在这里:https://github.com/ajaxorg/node-sftp

(NPM版本使用TTY和GitHub的版本使用PTY我不知道它们是什么)

启动服务器,调用代码后,我看到这个控制台。

launching: sftp -o Port=22 [email protected] 
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并能够登录。

回答

0

Sftp()function(err)...)的第二个参数是您想要放置conn.cd(...代码的位置。它(表示第二个参数)是一旦连接建立就被调用的函数。当然,请务必检查err

+0

谢谢,我试过了,但回调甚至没有被调用...导致我相信连接本身没有建立。我不知道如何调试,为什么它无法连接。 – user2295385

+0

你能运行tcpdump(或wireshark)吗? –