GitLab Runner에서 임의의 SSH 연결을 원합니다.
3396 단어 GitLab
docker 이미지를 사용하고 있지만, 이번 작업에서는 docker일 필요는 없습니다.
개인 키 생성
ssh-keygen -t rsa -b 4096 -f id_rsa_deploy
생성된 id_rsa_deploy(비밀 키)와 id_rsa_deploy.pub(공개 키)는 나중에 사용합니다.
개인 키를 GitLab 환경 정보로 설정
그룹 또는 프로젝트의 Settings→CI/CD→Variable에서 설정. Type은 File로 해두고, Value에 비밀키의 내용을 완전히 붙인다.
GitLab Runner에서 연결할 authorized_keys에 쓰기
공개 키의 내용을 GitLab Runner에서 연결할 대상(예를 들어, 발판 서버 등)의 authorized_keys에 작성하여 연결할 수 있도록 합니다. key의 대문자 소문자는 구별하므로 주의.
ssh-rsa AAAAB3Nza...OA9w== mydeploykey
열쇠가 누설되면 무엇 되는지 모르기 때문에 불안, 이라고 하는 경우는 ,. 다음과 같이하면 echo 만 할 수 있습니다, 어쩌면.
command="echo SSH Test OK $SSH_ORIGINAL_COMMAND" ssh-rsa AAAAB3Nza...OA9w== mydeploykey
command="..."
환경 변수를 사용하면 ssh 명령의 인수를 받을 수 있지만 공백을 포함하는 하나의 값을 인수에 제공할 때는 주의해야 합니다. 원래 여기까지 한다면 인수를 사용해 처리하는 것은 피하는 편이 좋을 것입니다..gitlab-ci.yml 쓰기
이번은 발판을 통해 다른 서버도 조작하고 싶었기 때문에 SSH-Agent를 치고 있습니다만, 필수는 아닙니다.
SSH Agent를 사용하지 않는 경우는
$SSH_ORIGINAL_COMMAND
라고 해도 좋을 것입니다.포트(
ssh -i "$ID_RSA_DEPLOY" -p22 USER@HOST echo hello world
)와 -p22
와 USER
를 적절히 교체하십시오.gitlab-ci.yml
image: docker:19.03.1
services:
- docker:19.03.1-dind
variables:
DOCKER_HOST: tcp://docker:2376
DOCKER_TLS_CERTDIR: "/certs"
deploy_production:
stage: deploy
script:
- apk update && apk add openssh
- chmod 0400 "$ID_RSA_DEPLOY"
- eval "$(ssh-agent)"
- ssh-add "$ID_RSA_DEPLOY"
- mkdir ~/.ssh/ && chmod 0700 ~/.ssh
- ssh-keyscan -p22 -H HOST > ~/.ssh/known_hosts
- ssh -A -p22 USER@HOST echo hello world
일단, known_hosts에 추기하고 있습니다만, 이 흐름 작업에서는 더 이상 무시해도 같은 생각은 합니다.
그리고는 yml 파일을 push하면 ci가 움직이기 시작할 것이다.
고생 포인트
HOST
가 없기 때문에 만들 필요가있었습니다 ~/.ssh/
를 1행 더하고는 재실행을 반복한 것입니까・・・이것만으로도 10회 정도 흘린 것 같다. 모두가 이렇게 쓰고 있을까 ...
Reference
이 문제에 관하여(GitLab Runner에서 임의의 SSH 연결을 원합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/fukasawah/items/9c257f0bc2dfe1d6823f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)