Команда ‘/bin/sh -c ssh-keyscan -t rsa 172.168.85.74 >> /root/.ssh/known_hosts’ вернула ненулевой код: 1

#linux #docker #ssh #nestjs

#linux #докер #ssh #nestjs

Вопрос:

Может ли кто-нибудь помочь мне исправить эту ошибку?

Я пробовал несколько решений для stackoverflow, но ни одно из них не может исправить ошибку, с которой я столкнулся.

кто-нибудь может помочь мне исправить эту ошибку.

Я застрял в решении этой проблемы, и, пожалуйста, скажите мне, какая часть в моем скрипте неверна.

Из-за этой проблемы моя работа застряла, в результате чего график внедрения был отложен на неопределенное время.

GitLab-ci.yml

 stages:
  - build_push

variables:
  DOCKER_REPO: repo
  DOCKER_USER: user
  DOCKER_PASSWORD: password
  CI_COMMIT_TAG: latest
  SERVICE_NAME: service

build_push:
  stage: build_push
  script:
    - docker login -u $DOCKER_USER -p $DOCKER_PASSWORD
    - echo "building docker image"
    - docker build -t $DOCKER_REPO:$CI_COMMIT_SHORT_SHA .
    - docker build -t $DOCKER_REPO:$CI_COMMIT_TAG .
    - echo "pushing image to docker hub"
    - if [ $CI_COMMIT_BRANCH = "develop" ]; then docker push $DOCKER_REPO:$CI_COMMIT_SHORT_SHA; fi
    - if [ -n "$CI_COMMIT_TAG" ]; then docker push $DOCKER_REPO:$CI_COMMIT_TAG ; fi
    - echo "docker image $SERVICE_NAME has been successfully pushed to docker hub"
  only:
    - develop

 

Dockerfile

 
FROM node:lts-alpine as build-stage
RUN apk update
RUN apk add openssh
RUN mkdir /root/.ssh amp;amp; chmod 0700 /root/.ssh
RUN touch /root/.ssh/known_hosts
RUN ssh-keyscan -t rsa 172.168.85.74 >> /root/.ssh/known_hosts
RUN npm config set strict-ssl false
RUN npm config set proxy ${http_proxy}
RUN npm config set https-proxy ${http_proxy}
WORKDIR /usr/src/app
COPY package.json .
RUN npm install

COPY . .
RUN npm run build

FROM node:lts-alpine as production-stage
RUN apk update
RUN apk add openssh
RUN mkdir /root/.ssh amp;amp; chmod 0700 /root/.ssh
RUN touch /root/.ssh/known_hosts
RUN ssh-keyscan -t rsa 172.168.85.74 >> /root/.ssh/known_hosts
RUN npm config set proxy ${http_proxy}
RUN npm config set https-proxy ${http_proxy}
ARG NODE_ENV=production
ENV NODE_ENV=${NODE_ENV}

WORKDIR /usr/src/app
COPY package.json ./

RUN npm install
COPY . .
COPY --from=build /usr/src/app/dist ./dist
CMD [ "node", "dist/main" ]


 

Журнал GitLab

 Running with gitlab-runner 13.5.0 (ece86343)
  on auth-runner 3tZsAfwR
Preparing the "shell" executor
00:00
Using Shell executor...
Preparing environment
00:00
Running on prodi...
Getting source from Git repository
00:01
Fetching changes with git depth set to 50...
Reinitialized existing Git repository in /home/gitlab-runner/builds/3tZsAfwR/0/universitas-terbuka/praktik-ut-auth/.git/
Checking out b51d2149 as panca-test-docker...
Skipping Git submodules setup
Executing "step_script" stage of the job script
$ docker login -u $DOCKER_USER -p $DOCKER_PASSWORD
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /home/gitlab-runner/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
$ echo "building docker image"
building docker image
$ docker build -t $DOCKER_REPO:$CI_COMMIT_SHORT_SHA .
Step 1/30 : FROM node:lts-alpine as build-stage
 ---> 7f1893c3ede0
Step 2/30 : RUN apk update
 ---> Using cache
 ---> f3c135d9ba44
Step 3/30 : RUN apk add openssh
 ---> Using cache
 ---> a2095837bd75
Step 4/30 : RUN mkdir /root/.ssh amp;amp; chmod 0700 /root/.ssh
 ---> Using cache
 ---> 074d7c835ebb
Step 5/30 : RUN touch /root/.ssh/known_hosts
 ---> Using cache
 ---> 1dea639e8240
Step 6/30 : RUN ssh-keyscan -t rsa 172.168.85.74 >> /root/.ssh/known_hosts
 ---> Running in 6d98e25ba480
The command '/bin/sh -c ssh-keyscan -t rsa 172.168.85.74 >> /root/.ssh/known_hosts' returned a non-zero code: 1
Cleaning up file based variables
00:00
ERROR: Job failed: exit status 1
 

Комментарии:

1. В чем было исправление?

Ответ №1:

Используется ssh-keyscan -t rsa 172.168.85.74 для сканирования открытого ключа 172.168.85.74 . В обычном случае она должна возвращать что-то вроде:

 172.168.85.74 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC9doCmMIs...
 

Из вашего журнала вы ничего не вернули, это означает, что контейнер сборки, который вы использовали для сборки образа, не смог получить ключ или не может получить доступ к 172.168.85.74 . Затем команда exit with 1 , которая приводит к сбою сборки. Вы должны убедиться, что машина сборки может выполнить пинг 172.168.85.74 .

Ответ №2:

ssh-keyscan Входит в комплект поставки openssh-client-common

 apk add openssh openssh-client-common