2

Я пытаюсь установить частный репозиторий gitlab через npm для другого проекта узла. Команда:npm install --save gitlab:my-project#master

npm ERR! Permission denied (publickey).
npm ERR! fatal: Could not read from remote repository.
npm ERR!
npm ERR! Please make sure you have the correct access rights
npm ERR! and the repository exists.

У меня есть следующие настройки: Windows 10, Git и Powershell.

Использование команд git непосредственно в Powershell работает нормально, например, git pull запрашивает пароль моего закрытого ключа, и это работает. Все остальное git работает нормально, за исключением команды npm install , которая, похоже, использует git для внутреннего использования.

Если я использую git bash, который устанавливается вместе с git в Windows, я могу запустить команду npm и установить частный репозиторий. Это терпит неудачу только в Powershell.

Тем не менее можно сказать: используйте git bash, но я как-то привык к PowerShell. :)

2 ответа2

1

В доступе отказано (publickey).

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


Проверьте доступ через SSH

Бежать:

ssh -T git@gitlab.com

чтобы проверить, правильно ли вы прошли аутентификацию на gitlab.com . В противном случае убедитесь, что вы добавили свой publickey в свою учетную запись GitLab.

Используйте git+ssh://

Используйте git+ssh:// вместо git:// , например:

npm i -S git+ssh://git@gitlab.com/my-project/repo.git

Смотрите: Установите модуль npm из частного репозитория GitLab.

Предоставить другую личность через SSH

Чтобы вывести список своих текущих имен, выполните:

ssh-add
ssh-add -L

Чтобы добавить другую личность, запустите: ssh-add ~/.ssh/MyOtherKey.pem

Проверьте npm

Также убедитесь, что вы не используете proxy для своего npm . Проверьте конфигурацию по списку конфигурации npm config list .

Используйте npm Enterprise

Вы можете использовать npm Enterprise для подключения к существующей системе аутентификации , такой как OAuth2 (для GitLab), GitHub Enterprise и другие. Вы также можете проверить наличие плагина auth-plugin (для GitLab см .: npme-auth-gitlab) или написать его для пользовательской аутентификации.

Используйте личный токен

Что касается обходного пути, вы можете создать свой личный токен или токен доступа OAuth2 (GitLab/OAuth2 ; GitHub/OAuth) и использовать его вместе с URL-адресом своего личного репозитория. Токен OAuth позволит вам получить доступ к репо через API, а личный токен напрямую через URL, например

  • GitHub: https://PERSONAL_ACCESS_TOKEN@github.com/my-project/repo
  • GitLab: https://gitlab.com/my-project/repo?private_token=<PERSONAL_ACCESS_TOKEN>
0

У меня такая же проблема. Вот как я решил это / мой обходной путь:

  • Убедитесь, что вы можете пройти аутентификацию на GitHub: ssh -T git@gitlab.com
  • Убедитесь, что OpenSSH Authentication Service не отключена (установите ее на ручной запуск) - не уверен, что этот шаг необходим
  • Теперь самый важный шаг: удалите защиту паролем из вашего ключа id_rsa . npm install не может обрабатывать ssh-ключи, защищенные паролем.

Я бы порекомендовал добавить SSH-ключ только для чтения непосредственно в репозиторий, который вы хотите установить. Это делает ключ SSH без защиты паролем немного менее опасным.

Добавьте файл config в ~/.ssh/ в котором вы определяете свои ключи:

IdentityFile ~/.ssh/id_rsa IdentityFile ~/.ssh/repository_ssh_key

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .