SSH를 사용하여 GitLab Runner와 배포 서버 간의 통신 설정

5273 단어 gitlabcicicdgitlab
gitlab-ci 파이프라인을 설정하는 경우 실행기 컴퓨터와 배포할 서버 간에 보안 연결을 설정해야 합니다.
다음은 빠르고 쉬운 방법입니다.

전제 조건


  • Gitlab CI 파이프라인
  • 실행기 및 배포 서버에 설치된 OpenSSH 클라이언트 및 서버.

  • SSH (Secure Shell) protocol uses public-key cryptography to authenticate Client machine with a remote Server machine on a network.



    시작하겠습니다. 먼저 SSH 키 쌍을 만듭니다.





    ssh-keygen은 SSH용 새 인증 키 쌍을 만드는 도구입니다. 이것은 사용에 대한 자습서이며 몇 가지 특수 사용 사례를 다룹니다.



    ssh-keygen은 SSH용 새 인증 키 쌍을 만드는 도구입니다. 이것은 사용에 대한 자습서이며 몇 가지 특수 사용 사례를 다룹니다.



    ssh.com



    Linux에서 설명을 위해 이 키를 만들었으며 SSH 키 경로는 OS에 따라 다를 수 있습니다.

    개인 키(~/.ssh/id_rsa)

    -----BEGIN RSA PRIVATE KEY-----
    MIICWwIBAAKBgQCAD0ZKDVKEyqPd+N+7N1O/fPjDYAHa8xL24ADRHegqurUa8cTL
    tCQX82ysu6uxqfVyOMY3YGOh2HCH8S+jB6GTuSY1tIsYaU46d5H9w7YXAr/MMWRJ
    L9wkUoU7bB/I8vK3eTVHsC72ufYhohQVXDY6+ZoG3Bsxyxy7SDbJqVBqXwIDAQAB
    AoGABCH6D7u8VQLBJRG6Dq2razuaP5vik3FSxFrYS+deLbrWy2bQBg7rN0ao1C4+
    TT6B6EzCwNjAfmGgyBJVijpd0X3iQzt5iPT5vMA2TrybbpMLZnikRtbo5rkgk+Tg
    m7AiqXzOSHv02ZtrpgDV3pQ+qa/Tk9FU/7hjefKMF2Ru6EkCQQDINwkKizU3Uw4T
    IwMAMTITOrLiswR4tJOmsG01Xe47dMkmERrtI47fYJcPLsNgnBjs6Pus8ALscOCM
    xinMBwFdAkEAo72Ir7d0BL/GmogKgmELXmVS6t1jzNok0ioi4w7EefYMaDrlMrlk
    rI7VMnExScPHc8ksezRBOJSS89cIIzYy6wJABrrq3+LcEBcHoxcLM8dzknfnqX0x
    CkmvqOvHUALvTipX1KLAj/YhCFs72LPOt4GnyNbwFtkekAofUjwbDZOytQJAXd8X
    McX22ZIohgdgHwcLwX5NXyC1Sof1fBd0EMAym8kXq9m39LCcquDoERcbrrJy8kpv
    GeMHUSy8Ytbwb19vKQJAT/lYWZqTpr+DfmTdmvRbCOz9hWOw4Hj+nfjfSsfzU9vg
    bWqKz2KvKlSvYBV4uKBfxsv6ML5dkaiHb5l3pKfDUw==
    -----END RSA PRIVATE KEY-----
    

    공개 키(~/.ssh/id_rsa.pub)

    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQCAD0ZKDVKEyqPd+N+7N1O/fPjDYAHa8xL24ADRHegqurUa8cTLtCQX82ysu6uxqfVyOMY3YGOh2HCH8S+jB6GTuSY1tIsYaU46d5H9w7YXAr/MMWRJL9wkUoU7bB/I8vK3eTVHsC72ufYhohQVXDY6+ZoG3Bsxyxy7SDbJqVBqXw==
    



    다음은 이 키를 어디에 저장합니까?
    위에서 생성한 SSH 키는 Gitlab Runner와 배포 서버 간에 암호화되고 인증된 세션을 활성화하기 위해 다음 위치에 저장됩니다.

    1. Gitlab CI 환경 변수





    GitLab CI/CD 변수 | 깃랩



    GitLab Community Edition, GitLab Enterprise Edition, Omnibus GitLab 및 GitLab Runner용 문서.


    docs.gitlab.com




    개인 및 공개 키에 이름(SSH_PRIVATE_KEY/SSH_PUBLIC_KEY)을 지정하여 저장하면 그룹 수준에서 키를 저장하고 환경 범위 드롭다운에서 선택하여 프로젝트에서 상속할 수 있습니다.



    2. Gitlab Runner Machine(SSH 폴더)
    개인 및 공개 키는 Gitlab Runner 머신의 [~/.ssh ] 폴더에 저장해야 합니다. 이렇게 하려면 프로젝트 .gitlab-ci.yml 파일에 다음 bash 명령을 추가해야 합니다.

    $SSH_PRIVATE_KEY & $SSH_PUBLIC_KEY are variables which we created in the step above.



    gitlab.local.net을 Gitlab을 호스팅한 URL로 바꿉니다.

    before_script:
      - eval $(ssh-agent -s)
      - mkdir -p ~/.ssh
      - chmod 700 ~/.ssh
      - echo -e "Host *\n\tStrictHostKeyChecking no\n" > ~/.ssh/config;
      - cat "$SSH_PRIVATE_KEY" | tr -d '\r' > ~/.ssh/id_rsa
      - cat "$SSH_PUBLIC_KEY" | tr -d '\r' > ~/.ssh/id_rsa.pub
      - chmod 600 ~/.ssh/id_rsa;
      - chmod 764 ~/.ssh/id_rsa.pub;
      - ssh-keyscan -H gitlab.local.net >> ~/.ssh/known_hosts
    


    3. 서버에서 생성authorized_keys애플리케이션을 배포할 서버에서 ~/.ssh 내부에 authorized_keys 파일을 만듭니다.

    Now, You would either be running your application on a Physical Server (nostalgic) or a VM — Virtual Machine (still there) or a Container (there you are).
    Then, Copy and paste the public key to the end of authorized_keysfile



    ~/.ssh/authorized_keys

    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQCAD0ZKDVKEyqPd+N+7N1O/fPjDYAHa8xL24ADRHegqurUa8cTLtCQX82ysu6uxqfVyOMY3YGOh2HCH8S+jB6GTuSY1tIsYaU46d5H9w7YXAr/MMWRJL9wkUoU7bB/I8vK3eTVHsC72ufYhohQVXDY6+ZoG3Bsxyxy7SDbJqVBqXw==
    


    설정하려는 연결에 따라 여기에 원하는 만큼 공개 키를 추가할 수 있습니다.

    마지막 단계를 통해 Gitlab Runner와 애플리케이션을 배포할 서버 간에 암호화된 통신 채널을 성공적으로 설정했습니다.

    명심하세요
    SSH 키에 매우 주의를 기울이고 올바른 권한과 소유권을 설정해야 합니다.

    감사합니다 !!

    좋은 웹페이지 즐겨찾기