Articles of sftp

命令行SFTP文件浏览器?

我正在编写一个应用程序(在Node.js中),我需要访问一个SFTP服务器,并允许用户提供凭据并浏览服务器上的文件。 我已经尝试过使用期望通过SSH连接,但是我发现太困难和太容易出错所有不同的操作系统/发行版/ SSH服务器定制。 有一个命令行工具,我可以很容易地使用build立连接,并获得目录列表,当用户浏览他们的服务器? 我曾尝试使用FileZilla中包含的可执行文件,但缺乏文档阻止我实现任何目标。

NodeJS – 使用“Sequest”检查SFTP远程文件是否存在

我是NodeJS的新手,我使用“Sequest”包来读取SFTP远程文件的内容。 它工作很好。 但是,如果我试图读取的文件不存在,则会抛出exception,应用程序不会进一步响应。 所以我想在读取文件之前检查文件是否存在。 由于我正在使用库函数(sequest.get),因为没有指定文件,我无法处理库方法中发生的exception。 以下是我的代码: var reader = sequest.get('xyz@abc', fileName, opts); reader.setEncoding('utf8'); reader.on('data', function(chunk) { return res.send(chunk); }); reader.on('end', function() { console.log('there will be no more data.'); }); 参考: https : //github.com/mikeal/sequest#gethost-path-opts Sequest( https://github.com/mikeal/sequest )是SSH2的封装( https://github.com/mscdex/ssh2 )。 任何帮助是极大的赞赏。 谢谢。

我如何使用NodeJs重命名SFTP上的文件

有没有办法重命名SFTP文件? 这是我用来下载的,我正在使用scp2节点模块: client.scp({ 'host': this.host, 'username': this.username, 'password': this.password, 'path': path },'./', function(err) { if (err){ return callback("File: "+path+" "+err); }else{ return callback(null); } }); 也许我可以下载这个文件,用另一个名字上传它,然后从SFTP中删除旧的文件。 但是这并不完整。 我已经通过其他模块,如: https : //www.npmjs.com/package/sftpjs ,有一些重命名function实现,但我不能让它的工作。 任何build议? 这是非常明显的用例,我找不到任何东西。 编辑: Vijay的答案是正确的。 我只是做错了。 我的代码: // Download swush file from SFTP var Client = require('sftpjs'); var c = Client(); c.on('ready', function () […]

使用Nodejs(fs)来访问inputtypes为file的文件

我无法读取不同位置的文件(Node项目目录除外)。 我需要读取一个私钥文件(可能位于文件系统的任何位置),并通过sftp传输一些yaml / yml文件(也可能位于任何位置)。 这些文件在一个文件input字段中select,该字段通过我的index.js(在Node中)的post方法访问。 问题是当我试图读取文件时,我得到一个文件不存在的错误,特别是因为目录默认为Node项目目录。 例如: d:/path/到/节点/项目 d:/这/是/在/的/ keyis 它会尝试阅读这个文件: d:/path/到/节点/项目/ keyis 我不知道为什么我只能得到文件名。 我知道接收整个path是一个安全风险,但我需要的path,即使它不是在任何阶段打印。 这是html表单的代码: <form id="file-upload" name="uploadform" method="post" action="/upload" onsubmit="update()"> <input type='text' id='username' class="btn btn-lg btn-default" name='username' placeholder='Enter Username' style="color:#000"><br> <h3>Select Key:</h3><input type='file' id='key-select' name='keySelect'><br> <h3>Select Yaml:</h3><input type="file" id="file-select" name="yamlfiles[]" multiple accept=".yml, .yaml"/><br> <button type="submit" class="btn btn-lg btn-default" id="upload">Upload Data</button> </form> 然后在index.js中: router.post('/upload', […]

在Nodejs中使用ssh2传输整个目录

我只是想知道,是否完全可以使用node.js中的ssh2模块将目录从unix服务器传输到本地机器。 我已经连接到远程主机,可以读取目录以及传输单个文件,但目录中有28个文件夹,每个文件夹都包含文件和子目录。 我想要做的是从服务器到我的本地机器的主目录的确切副本。 我使用fastGet与单个文件,但传输目录给出: Error: EISDIR, open __dirname/../localdirectory/我认为暗示我不能使用fastGet获取整个目录。 我也尝试使用exec命令来尝试scp它,但我无法解决本地目录的语法: // c is an active connection c.exec('scp filethatexists.extension /../filepath/newname.extension', function(err, stream) { if (err) { console.log("error: " + err); stream.end; }; stream.on('data', function(data, extended) { console.log((extended === 'stderr' ? 'STDERR: ' : 'STDOUT: ') + data); }); stream.on('end', function() { console.log('Stream :: EOF'); }); stream.on('close', function() […]

使用gulp-sftp仅上载更改的文件

我有以下任务gulp: gulp.task('sync-frontend', /*['build-frontend'],*/ function() { if(config.layout.frontend.syncOnBuild) return gulp .src(config.layout.frontend.distDir + '/**') .pipe(changed(config.layout.frontend.distDir, {hasChanged: changed.compareSha1Digest})) //.pipe(debug()) .pipe(gulp.dest(config.layout.frontend.distDir)) .pipe(sftp ({ host: config.sftp.host, port: config.sftp.port, user: config.sftp.user, pass: config.sftp.pass, remotePath: (config.layout.frontend.remotePath ? config.layout.frontend.remotePath : config.sftp.remotePath ) })); }); config.layout.frontend.distDir值是'httpdocs'。 问题是,没有文件正在上传,无论是否被改变(我已经试图离开hasChange改变选项的默认情况下,我总是得到以下输出: [20:45:52] Using gulpfile /Storage/Portable/Sync/Projects/Prataria/web-prataria/gulpfile.js [20:45:52] Starting 'sync-frontend'… [20:45:52] gulp-sftp: No files uploaded [20:45:52] Finished 'sync-frontend' after 503 ms […]

使用sftp和socks5代理node.js

我一直在寻找使用ssh2模块sftp运输日志。 然而,托pipe我们的应用程序的云服务使用旋转的IP地址范围。 所以想要整合给我们静态IP地址的socks5代理服务。 我正在使用socksjs模块来build立socks5连接,我正在连接到代理服务器,但我想我已经注入了这个套接字连接,以便sftp使用错误。 干杯, 聂 var sockConn = new SocksConnection(connTargetSettings, connProxySettings); connTargetSettings.sock = sockConn.outSocket; var conn = new ssh2.Client(); conn.on("ready", function() { conn.sftp(function(err, sftp) { if (err) throw err; // you'll be able to use sftp here sftp.readdir("/", function(err, list) { if (err) throw err; // List the directory in the console console.dir(list); // […]

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

我一直在做一个任务,使用一个公共的PGP密钥在他发给我的一个ascfile upload一个文件到合作伙伴的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站点,并得到一个消息,即hostkeyalgorithm是ssh-dss 1024以及SHA256和MD5指纹。 我不确定这是否有帮助。 有没有人有.asc文件的经验,以及如何使用它们来build立一个SFTP连接? 编辑:我已经尝试使用npm包sftp上传与下面的代码: 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', […]

在Node中的SFTP模块下载和删除文件

我的任务是(或者更好,应该是)简单的:从一个Node应用程序中获取SFTP中的一个目录的内容,然后下载所有的文件并最终远程删除它们。 现在,我检查了不同的模块。 在我看来,非常干净的是ssh2-sftp-client。 我可以这样使用它: let Client = require('ssh2-sftp-client'); let sftp = new Client(); sftp.connect({ host: myhost, port: '22', username: myusername, password: mypassword }).then(() => { return sftp.list('/path/to/my/files'); }).then((data) => { for(var i = 0 ; i < data.length; i++) { sftp.get('/path/to/my/files/'+data[i].name); } }).catch((err) => { console.log(err, 'catch error'); }); 我可以列出所有文件,并在控制台中查看生成的jSon,但.get命令似乎什么都不做,我不知道什么是错的。 从文档( https://www.npmjs.com/package/ssh2-sftp-client )你可以得到像我在做的文件。 但: 1)它似乎不工作2)我怎样才能debugging是怎么回事? […]

AWS Lambda可以与S / FTP进行交互吗?

我写了一些基本的js来列出一个FTP的文件,但我得到: “完成请求之前退出进程” 那是因为Lambda无法与FTP交互? 我正在使用jsftp btw。 这是我的设置: 我使用无服务器来创build项目 对于我的lambda,我使用了nodejs,而且我正在使用JSFTP来处理ftp的东西。 我的代码: // Require Serverless ENV vars var ServerlessHelpers = require('serverless-helpers-js').loadEnv(); // Require Logic var lib = require('../lib'); // Lambda Handler module.exports.handler = function (event, context) { lib.respond(event, function (error, response) { return context.done(error, response); }); }; 我的ftp lambda代码: var JSFtp = require("jsftp"); module.exports.respond = function (event, cb) […]