web-dev-qa-db-fra.com

Existe-t-il un moyen de spécifier quelle clé ssh doit être utilisée pour l'installation de npm

J'ai un dépôt privé que je souhaite installer dans mon fichier package.json.

"private-module": "git+ssh://[email protected]:private/private-module.git"

Par défaut, npm utilise votre clé privée par défaut. Je veux pouvoir spécifier la clé ssh que npm doit utiliser lors de l'exécution de npm install. Est-ce qu'il y a un moyen de faire ça?

22
Vadim

Voici quelques solutions:

  • Ajoutez une entrée à votre ~/.ssh/config. Par exemple:

     Hôte bitbucket.org 
     IdentityFile ~/.ssh/bitbucket_key 
     IdentitiesOui seulement 
    
  • Utilisation ssh-agent et ajoutez au préalable votre clé à l'instance d'agent.

  • Utilisez quelque chose comme ssh-ident pour choisir dynamiquement les agents et identités ssh en fonction du répertoire de travail actuel ou des arguments passés à ssh-ident. Comme leur readme l'indique, vous devez généralement alias ssh-ident pour ssh afin qu'il soit automatiquement utilisé partout.

29
mscdex

Après avoir effectué les modifications dans la première partie de mscdex answer vous devrez peut-être ajouter l'hôte à la liste des hôtes connus - avant le npm install la commande fonctionnera.

Vous pouvez le faire en clonant le référentiel privé dans un autre répertoire:

git clone ssh://[email protected]:private/private-module.git

Il vous sera peut-être demandé si vous souhaitez continuer, tapez yes et entrez, puis bitbucket.org est approuvé. Retournez dans le répertoire de votre projet et réessayez npm install. C'est ce qui était nécessaire pour que la réponse de mscdex fonctionne pour moi.

Il existe d'autres façons d'ajouter des hôtes de confiance, mais cela permet en plus de vérifier que vous pouvez réellement accéder au référentiel privé souhaité.

2
mwotton

Sinon, vous pouvez utiliser votre jeton NPM dans votre .npmrc fichier:

// .npmrc
//registry.npmjs.org/:_authToken=${YOUR_NPM_TOKEN}

Source: https://blog.npmjs.org/post/118393368555/deploying-with-npm-private-modules

0
Wilk