Node.js Дочерние процессы, не проходящие аутентификацию GitHub ssh - PullRequest
0 голосов
/ 07 февраля 2019

Цель

Здравствуйте, я создаю приложение Node.js для обновления моего кода при автоматическом нажатии.

Проблема

В нем все работает, кромефактический мерзавец.Репозиторий является частным и должен использовать ssh, однако, когда я использую ту же команду в терминале, он работает.У меня есть связка ключей, поэтому она не просит мою фразу-пароль.Любые идеи и как это исправить?

Соответствующий код

const exec = require("child_process").exec;

exec('cd ' + repo + ' && git pull origin deployment', (egitpull,stdoutgitpull,stderrgitpull)=>{
  if(egitpull) return console.error(`git pull exec error:${egitpull}`)
  console.log(`git pull stdout: ${stdoutgitpull}`);
  console.log(`git pull stderr: ${stderrgitpull}`);

Выполнение команды:

cd /mp/ && git pull origin deployment

Нет дочернего процесса vrs.в дочернем процессе

enter image description here

Edit:

Удаление ключевой фразы из ключа целиком, кажется, решает проблему, но я бы оченьпредпочитаю иметь его там по соображениям безопасности.

1 Ответ

0 голосов
/ 07 февраля 2019

Если вы используете ssh-agent для ключей ssh, попробуйте перенаправить переменные SSH_AUTH_SOCK и SSH_AGENT_PID env в дочерний процесс, например:

exec('cd ' + repo + ' && git pull origin deployment',
        {
            env: {
                SSH_AUTH_SOCK: process.env.SSH_AUTH_SOCK,
                SSH_AGENT_PID: process.env.SSH_AGENT_PID
            }
        },
        (egitpull,stdoutgitpull,stderrgitpull) => {
            // ...
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...