让gulp-scp2要求输入密码

时间:2018-02-07 08:58:05

标签: javascript gulp scp

我正在使用gulp通过scp移动远程目录中的某些文件夹。实际上,如果我在gulpfile中声明密码,它工作正常。我宁愿每次尝试通过提示运行此任务时都需要密码,而不是将其显示在文件中。 我怎么能这样做?

我的大口任务:

var scp = require('gulp-scp2');

gulp.task('deploy', function(done) {
    return gulp.src("./dist/**")
    .pipe(scp({
        host: 'localhost',
        username: 'saifer',
        dest: '/home/saifer/'
        }))
    .on('error', function(err) {
        console.log(err);
        });
   });

以这种方式启动任务显然会引发错误,如:

Error: Authentication failure. Available authentication methods: publickey,gssapi-keyex,gssapi-with-mic,password

我正在寻找一些东西来添加scp的传递对象,让gulp taks在尝试连接之前要求输入密码

1 个答案:

答案 0 :(得分:0)

我认为提示是一个无情的问题。您应该使用单独的模块(或者只使用标准库中的readline模块)来解决它。下面的解决方案使用prompt模块:

const util = require('util')
const prompt = require('prompt')

var schema = {
  properties: {
    password: {
      hidden: true
    }
  }
};

prompt.start();

util.promisify(prompt.get)(schema).then(({ password }) => {
  var scp = require('gulp-scp2');

  gulp.task('deploy', function(done) {
    return gulp.src("./dist/**")
      .pipe(scp({
        host: 'localhost',
        username: 'saifer',
        dest: '/home/saifer/',
        password
      }))
      .on('error', function(err) {
        console.log(err);
      });
  });
});