MECANISMO nacional de prevención agregar privado de la repo de falla con permiso denegado cuando es a partir de un proyecto existente

0

Pregunta

He estado tratando de depurar esta super raro problema. Tengo un proyecto en el que estoy tratando de instalar un repositorio privado con el npm comando.

Esto no funciona cuando se está en un proyecto existente, pero no cuando se trata de un nuevo proyecto que acaba de ser creado con npm init.

El proyecto está en /app y el nuevo proyecto está en /opt (para propósitos de prueba)

Ejecución npm add git+ssh://[email protected]:company/repository.git en /app vuelve con:

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

Ejecutando el mismo comando de la /opt el proyecto se instala correctamente el paquete sin ningún problema.

Me estoy quedando este de los alpes caja con ventana acoplable openssh instalado.

Este es el 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

Un par mas de cosas informativos

/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"
    }
}

Alguna idea de lo que está pasando aquí?

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

Pruebe en su Dockerfile para establecer

ENV GIT_SSH_COMMAND='ssh -Tv'

Eso te dará más pistas acerca de por qué su clave SSH es o no es considerada como durante npm add.

2021-11-24 08:02:52

Mejor respuesta

1

Con la ayuda de @VonC la respuesta que yo era capaz de averiguar lo que estaba pasando.

Tomando una mirada más cercana a los registros, me enteré de que en realidad hay un usuario llamado node que se utiliza cuando se ejecuta npm. Dentro de la Dockerfile de los alpes imagen a este usuario se crea y npm está configurado para utilizar este usuario.

Así que lo que pasó fue que cada vez que se registra en la ventana acoplable contenedor estaba ingresando como el root usuario y todas las llaves ssh que se establezca en el Dockerfile estaban siendo dirigido por el root usuario.

Ejecución de la ssh -T [email protected] ha trabajado por la root usuario fue configurado correctamente, pero no la node usuario

Lo que todavía no puedo conseguir mi cabeza alrededor es ¿por qué se ejecuta el comando en la /opt carpeta de trabajo? De todos modos eso es un misterio para un día diferente.

Este es mi actualizados Dockerfile. Me puse las llaves ssh para la node de usuario y de inicio de sesión como el node usuario

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

Buena captura, bien hecho! Upvoted.
VonC

En otros idiomas

Esta página está en otros idiomas

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