NPM aggiungere da privato repo non riesce con autorizzazione negata quando è da un progetto esistente

0

Domanda

Ho cercato di eseguire il debug di questo super problema strano. Hai un progetto in cui sto cercando di installare un repository privato con il npm comando.

Questo non funziona quando è in un progetto esistente, ma non quando si tratta di un progetto appena creato che è stato appena creato con npm init.

Il progetto esistente è in /app e il nuovo progetto è in /opt (per scopi di test)

In esecuzione npm add git+ssh://[email protected]:company/repository.git in /app restituisce:

npm ERR! code 128
npm ERR! An unknown git error occurred
npm ERR! command git --no-replace-objects ls-remote ssh://[email protected]/company/repository.git
npm ERR! [email protected]: 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.

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2021-11-24T00_25_10_559Z-debug.log

In esecuzione lo stesso esatto comando dal /opt progetto installa il pacchetto correttamente e senza problemi.

Sto correndo da un alpino finestra mobile di dialogo con openssh installato.

Questo è il Dockerfile

FROM node:16.13-alpine

RUN apk add --no-cache openssh-client git python2

RUN mkdir -p -m 0600 ~/.ssh && ssh-keyscan github.com >> ~/.ssh/known_hosts && ln -s /run/secrets/ssh_key ~/.ssh/id_rsa && ln -s /run/secrets/ssh_pub_key ~/.ssh/id_rsa.pub

RUN mkdir /app

WORKDIR /app

Ancora qualche materiale informativo

/app # node -v
v16.13.0
/app # npm -v
8.1.4
/app # ssh -T [email protected]
Hi AzaZPPL! You've successfully authenticated, but GitHub does not provide shell access.

package.json

{
    "name": "project",
    "version": "1.0.0",
    "private": true,
    "scripts": {
        "dev": "nuxt",
        "build": "nuxt build",
        "start": "nuxt start",
        "generate": "nuxt generate",
        "generate-schema": "node apollo/generate-schema.js",
        "lint": "eslint --ext .js,.vue --ignore-path .eslintignore .",
        "lintfix": "eslint --fix --ext .js,.vue --ignore-path .eslintignore ."
    },
    "dependencies": {
        "@nuxtjs/apollo": "^4.0.1-rc.4",
        "@nuxtjs/auth": "^4.9.1",
        "@nuxtjs/axios": "^5.12.2",
        "@nuxtjs/dayjs": "^1.2.1",
        "@nuxtjs/style-resources": "^1.0.0",
        "apollo-cache-inmemory": "^1.6.6",
        "copy-to-clipboard": "^3.3.1",
        "core-js": "^3.6.5",
        "date-fns": "^2.19.0",
        "dotenv": "^8.2.0",
        "filepond": "^4.27.1",
        "filepond-plugin-file-validate-type": "^1.2.6",
        "filepond-plugin-image-preview": "^4.6.6",
        "graphql-tag": "^2.11.0",
        "js-file-download": "^0.4.12",
        "jwt-decode": "^3.1.2",
        "lodash": "^4.17.20",
        "nuxt": "^2.14.6",
        "nuxt-buefy": "^0.4.10",
        "nuxt-i18n": "^6.15.4",
        "vee-validate": "^3.4.3",
        "vue": "^2.6.12",
        "vue-filepond": "^6.0.3"
    },
    "devDependencies": {
        "@babel/eslint-parser": "^7.16.3",
        "eslint": "^7.12.1",
        "eslint-config-prettier": "^6.15.0",
        "eslint-loader": "^4.0.2",
        "eslint-plugin-prettier": "^3.1.4",
        "eslint-plugin-vue": "^7.1.0",
        "prettier": "^2.1.2",
        "sass": "^1.32.8",
        "sass-loader": "^12.3.0"
    }
}

Tutte le idee in quello che sta succedendo qui?

docker git github node.js
2021-11-24 00:41:33
2
1

Provare nel tuo Dockerfile per impostare

ENV GIT_SSH_COMMAND='ssh -Tv'

Che dovrebbe dare più indizi perché la chiave SSH è o non è considerato durante npm add.

2021-11-24 08:02:52

Migliore risposta

1

Con l'aiuto di @VonC risposta sono stato in grado di capire cosa stava succedendo.

Prendendo uno sguardo più da vicino i log, ho scoperto che in realtà c'è un utente chiamato node che viene utilizzata durante l'esecuzione npm. All'interno del Dockerfile Alpino e di immagine che questo utente è stato creato e npm è configurato per l'utilizzo di questo utente.

Quindi quello che è successo è stato quando ho effettuato il mobile contenitore ero registrazione come root utente e tutte le chiavi ssh, che sono stati fissati nel Dockerfile sono stati gestiti dalla root utente.

In esecuzione della ssh -T [email protected] ha lavorato perché il root l'utente è stato configurato correttamente, ma non la node utente

Quello che ancora non riesco a ottenere la mia testa intorno è il motivo per cui era in esecuzione il comando /opt la cartella di lavoro? Comunque è un mistero per un giorno diverso.

Questo è il mio aggiornati Dockerfile. Ho impostato le chiavi ssh per l' node utente e login come node utente

FROM node:16.13-alpine

RUN apk add --no-cache openssh-client git

RUN mkdir /app && chown node:node /app

USER node

RUN mkdir -p -m 0700 ~/.ssh && ssh-keyscan github.com >> ~/.ssh/known_hosts

RUN ln -s /run/secrets/ssh_key ~/.ssh/id_rsa

WORKDIR /app
2021-11-24 09:02:43

Buona cattura, ben fatto! Con voto positivo.
VonC

In altre lingue

Questa pagina è in altre lingue

Русский
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................