我试图使用gulp来处理从本地开发环境到正在运行的流浪汉机器的rysnc任务。
gulp任务设置如下:
var rsync = require('rsyncwrapper').rsync;
var secrets = require('./secrets.json');
// ###Rsync
// Ran from gulp
gulp.task('deploy', function() {
rsync({
ssh: true,
src: './website/',
dest: secrets.servers.dev.rsyncDest,
recursive: true,
syncDest: true,
exclude: ['node_modules'],
args: ['--verbose'],
privateKey: './.vagrant/machines/default/virtualbox/private_key',
onStdout: function (data) {
console .log (data.toString ());
}
},function (error,stdout,stderr,cmd) {
if ( error ) {
// failed
console.log(error.message);
} else {
// success
console.log("folder synced!");
}
});
});
secrets.json包含我的目的地流浪汉机器的路径:
{
"servers": {
"dev": {
"rsyncDest": "vagrant@192.168.2.101:/opt/webiste"
}
}
}
我的gulp文件的其余部分没有问题,普通的vagrant rsync也适用于传输文件。
但是,当我运行任务部署时,我只是得到:Rsync退出代码12。
经过一些谷歌搜索,我发现这意味着协议流已经失败,但我不确定甚至在哪里开始尝试解决这个问题。
非常感谢任何帮助!
答案 0 :(得分:1)
我遇到了同样的问题。它发生在我摧毁并重建我的流浪汉机器时,但我将旧密钥留在~/.ssh/known_hosts
文件中。错误消息gulp-rsync没有帮助。如果您尝试直接登录,则会收到如下错误:
>> ssh vagrant@192.168.50.104
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
87:9b:39:02:b8:96:6b:21:01:fa:b5:42:5f:0a:0b:f7.
Please contact your system administrator.
Add correct host key in /Users/me/.ssh/known_hosts to get rid of this message.
Offending RSA key in /Users/me/.ssh/known_hosts:36
RSA host key for 192.168.50.104 has changed and you have requested strict checking.
Host key verification failed.
要修复此问题,请修改文件~/.ssh/known_hosts
。删除流浪机的主机密钥行。就我而言,它是从192.158.50.104开始的。
下次运行gulp-rsync时,您必须在提示符下键入yes
。