Node.JS Ошибка команды exec git: В доступе отказано (publickey)

1

Вопрос: Как запустить git push из node.js с помощью passphrase.

Я пытаюсь создать небольшой модуль, где мне нужно запустить git push from node.js для удаленного repo, но я получаю сообщение об ошибке, когда я с node.js exec но не с терминала.

Мой код.

./command.ts

import * as util from 'util';

const exec = util.promisify(require('child_process').exec);

export default function command(command: string): Promise<string> {
  return exec(command, {cwd: process.cwd()}).then((resp) => {
    const data = resp.stdout.toString().replace(/[\n\r]/g, '');
    return Promise.resolve(data);
  });
}

./index.ts

import command from './command';

async function init() {
 try {
  await command('git add .');
  await command('git commit -m "my commit" ');
  conat result = await command('git push');
 } catch (e) {
  console.log(e);
 }
}

init();

и когда я запускаю ts-node./index.ts я получаю следующую ошибку.

Error: Command failed: git push                                                                                                         
[email protected]: Permission denied (publickey).                                                                                       
fatal: Could not read from remote repository.                                                                                           

Please make sure you have the correct access rights                                                                                     
and the repository exists.

Но когда я запускаю git push с терминала, я получаю подсказку с парольной фразой, и это работает.

Любая идея о том, как решить эту проблему, есть способ запускать git push с помощью парольной фразы, используя node.js?

Имейте в виду, что я буду любить исправлять это без каких-либо внешних библиотек.

Заранее спасибо.

  • 0
    Если у вас все в порядке с использованием имени пользователя и пароля, вы можете легко сделать git push https://username:[email protected]/file.git --all
Теги:
ssh

2 ответа

0
Лучший ответ

Как описано здесь, проверьте, работает ли одна и та же программа, когда:

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

  • 0
    Спасибо за ваш ответ, он работает, однако, если нет ключа ssh, пользователю будет предложено ввести имя пользователя и передать
  • 0
    @diegoddox Ну да ... но в вашем случае есть ключ ssh, верно?
Показать ещё 2 комментария
0

Вам может потребоваться добавить env: process.env в параметры exec(), если ваш ключ загружен в процесс ssh-agent. Существуют некоторые переменные среды ssh-agent export, которые используются другими процессами, чтобы найти ssh-agent для доступа к своим ключам.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню