web-dev-qa-db-ja.com

npmは、PowershellでプライベートGitlab Repo Permission Denied(publickey)をインストールします

Npm経由でプライベートgitlabリポジトリを別のノードプロジェクトにインストールしようとしています。コマンドは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。

Powershellで直接gitコマンドを使用すると、正常に機能します。 git pullは私の秘密鍵のパスワードを要求し、それは機能します。内部でgitを使用しているように見えるnpm installコマンドを除いて、他のすべてのgitのものは正常に機能しています。

Windowsのgitと共にインストールされるgit bashを使用する場合、npmコマンドを実行してプライベートリポジトリをインストールできます。 Powershell内でのみ失敗します。

それでも、git bashを使用することはできますが、PowerShellには慣れています。 :)

3
Philipp

私も同じ問題を抱えていました。これは私がそれを解決した方法/私の回避策です:

  • GitHubに対して認証できることを確認してください:ssh -T [email protected]
  • OpenSSH Authentication Serviceが無効になっていないことを確認してください(手動開始に設定してください)-この手順が必要かどうかわからない
  • ここで最も重要なステップid_rsaキーからパスワード保護を削除します。 npm installは、パスワードで保護されたsshキーを処理できません。

インストールするリポジトリに読み取り専用 SSHキーを直接追加することをお勧めします。これにより、パスワード保護なしのSSHキーを使用することの危険性が少し低くなります。

キーを定義する~/.ssh/configファイルを追加します。

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

2
jwillmer

許可が拒否されました(公開鍵)。

これは、現在の公開鍵をリモートサーバーで認証できないことを意味します。


SSH経由でアクセスを確認する

実行:

ssh -T [email protected]

gitlab.comで正しく認証されているかどうかを確認します。それ以外の場合は、publickeyをGitLabアカウントに追加したことを確認してください。

git+ssh://を使用します

たとえば、git+ssh://の代わりにgit://を使用します。

npm i -S git+ssh://[email protected]/my-project/repo.git

参照: GitLabプライベートリポジトリからnpmモジュールをインストール

SSH経由で異なるIDを提供する

現在のIDを一覧表示するには、次を実行します。

ssh-add
ssh-add -L

別のIDを追加するには、次を実行します:ssh-add ~/.ssh/MyOtherKey.pem

npmを確認してください

また、proxynpmを使用していないことを確認してください。 npm config listで設定を確認してください。

npmEnterpriseを使用する

Npm Enterpriseを使用して、既存の authentication システム(OAuth2(GitLab用)、 GitHub Enterprise など)に接続できます。既存のauth-pluginを確認することもできます(GitLabについては、 npme-auth-gitlab を参照)、または カスタム認証 用に作成することもできます。

個人トークンを使用する

回避策として、個人用またはOAuth2アクセストークンを作成できます( GitLab / OAuth2 ; GitHub / OAuth )プライベートリポジトリのURLと一緒に使用します。 OAuthトークンを使用すると、API経由でリポジトリにアクセスでき、URL経由で個人トークンに直接アクセスできます。

  • GitHub:https://[email protected]/my-project/repo
  • GitLab:https://gitlab.com/my-project/repo?private_token=<PERSONAL_ACCESS_TOKEN>
2
kenorb