2016-10-31 2 views
1

Я использую задачу глотка, чтобы развернуть мое приложение, как это (в этом примере я опуская реальные значения)Как использовать ключ SSH с глотком-Rsync и Cygwin

gulp.task('deploy', function() { 
return gulp.src(config.deployFiles) 
     .pipe(rsync({ 
      root: 'build/', 
      hostname: 'hostname', 
      username: 'username', 
      destination: 'destination' 
    }));}); 

Однако, команда не выполняется с

gulp-rsync: Permission denied (publickey).

Примечание. Я могу получить доступ к удаленному серверу через ssh, так как указать cygwin использовать правый ключ ssh, чтобы gulp-rsync мог его использовать?

ответ

1

Это решение, которое я нашел до сих пор. В Cygwin терминале перспективе

ssh-host-config 

это создаст конфигурационный файл в Cygwin/и т.д. папку (/ и т.д./ssh_config). Затем добавьте в этот файл запись хоста

Host hostnameToUse 
     Hostname xx.xx.xx.xx.xx 
     Port 22 
     IdentityFile D:\keys\vps 

Затем обновите имя хоста в глотке задаче к глотка развертывают работы «hostnameToUse»:

Глоток-Rsync: отправка инкрементного списка файлов ....

1

Вы правы @ojb. Я также застрял в аналогичной позиции, когда хотел, чтобы мой готовый код готовился онлайн, используя глоток в качестве части моего автоматизированного рабочего процесса.

В принципе нет стандартного параметра для передачи как ssh_key_location в gulp-rsync. Поэтому обходным путем является использование файла конфигурации ssh для создания локального псевдо-хоста . Этот процесс маскирует фактическое имя хоста с псевдоним хоста .

(ec2-xx-xxx-xxx-xxx.ap-west-2.compute.amazonaws.com + ключ) => hostname.com

Поскольку нет надлежащего документации о том, как решить эту проблему здесь подробно, как сделать для всех, кто может столкнуться этот вопрос

Первый шаг: Update ~/.ssh/конфигурационный файл, чтобы сделать эту работу: $ ssh hostname.com

Host hostname.com 
    HostName ec2-xx-xxx-xxx-xxx.ap-west-2.compute.amazonaws.com 
    User ec2-user 
    IdentityFile ~/<path-to-file>/keyfile.pem 

Второй шаг:

Добавьте это в функцию глотком

// Dirs and Files to sync 
    rsyncPaths = ['directory-names', './file-name',....]; 
    // Default options for rsync 
    rsyncConf = { 
    progress: true, 
    incremental: true, 
    relative: true, 
    emptyDirectories: true, 
    recursive: true, 
    clean: true, 
    exclude: [], 
    }; 

Третий шаг: Создать следующую функцию в глотке

//something-on-top  
return gulp.src(rsyncPaths) 
    .pipe($.rsync(rsyncConf)); 

Troubleshoot: 1. Проверьте, имеет ли файл 400 прав доступа 2. Проверьте, работает ли $ ssh hostname.com

Смежные вопросы