gitlab-sshd

Tier: Free, Premium, Ultimate Offering: Self-Managed형
  • GitLab 15.1의 클라우드 네이티브 GitLab 및 GitLab 15.9의 Linux 패키지로 프로덕션 환경에서 사용할 준비가 되어 있습니다.

gitlab-sshd는 Go로 작성된 독립적인 SSH 서버입니다. gitlab-shell 패키지의 일부로 제공됩니다. OpenSSH 대체제로써 더 낮은 메모리 사용량을 갖고 있으며, 프록시 뒤에서 실행되는 응용 프로그램을 위한 IP 주소에 의한 그룹 액세스 제한을 지원합니다.

gitlab-sshdSSH 작업을 제공하기 위한 가벼운 대안입니다. OpenSSH는 제한된 셸 접근 방식을 사용하는 반면, gitlab-sshd는 현대적인 멀티스레드 서버 응용 프로그램과 유사하게 동작하여 들어오는 요청에 응답합니다. 주요 차이점은 OpenSSH가 전송 프로토콜로 SSH를 사용하는 반면, gitlab-sshd는 원격 프로시저 호출 (RPC)을 사용한다는 것입니다. 자세한 내용은 블로그 글을 참조하세요.

GitLab Shell의 기능은 Git 작업에만 한정되지 않습니다.

OpenSSH에서 gitlab-sshd로 전환을 고려 중이라면 다음을 고려해보세요:

  • gitlab-sshd는 PROXY 프로토콜을 지원합니다. PROXY 프로토콜은 HAProxy와 같이 이에 의존하는 프록시 서버에서 실행될 수 있습니다. PROXY 프로토콜은 기본적으로 활성화되어 있지 않지만 활성화할 수 있습니다.
  • gitlab-sshd는 SSH 인증서를 지원하지 않습니다. 이에 대한 논의는 이슈 655를 참조하세요.

gitlab-sshd 활성화

gitlab-sshd를 사용하려면:

리눅스 패키지 (Omnibus)

다음 지침은 gitlab-sshd를 OpenSSH와 다른 포트에서 활성화합니다:

  1. /etc/gitlab/gitlab.rb 파일 편집:

    gitlab_sshd['enable'] = true
    gitlab_sshd['listen_address'] = '[::]:2222' # 포트를 적절히 조정하세요
    
  2. (옵션) 기본적으로 리눅스 패키지 설치는 /var/opt/gitlab/gitlab-sshd에 존재하지 않은 경우 gitlab-sshd를 위해 SSH 호스트 키를 생성합니다. 이 자동 생성을 비활성화하려면 다음 줄을 추가하세요:

    gitlab_sshd['generate_host_keys'] = false
    
  3. 파일을 저장하고 GitLab을 재구성합니다:

    sudo gitlab-ctl reconfigure
    

기본적으로 gitlab-sshdgit 사용자로 실행됩니다. 따라서 gitlab-sshd는 1024보다 작은 권한 있는 포트 번호에서 실행할 수 없습니다. 이는 사용자들이 gitlab-sshd 포트에서 Git에 액세스하거나 SSH 트래픽을 숨기기 위해 로드 밸런서를 사용해야 함을 의미합니다.

새로 생성된 호스트 키가 OpenSSH 호스트 키와 다르기 때문에 사용자들은 호스트 키 경고 메시지를 볼 수 있습니다. 이 문제가 있는 경우 호스트 키 생성을 비활성화하고 기존 OpenSSH 호스트 키를 /var/opt/gitlab/gitlab-sshd에 복사하는 것을 고려하세요.

Helm 차트 (Kubernetes)

다음 지침은 OpenSSH를 gitlab-sshd로 전환합니다:

  1. gitlab-shell 차트의 sshDaemon 옵션을 gitlab-sshd로 설정하세요. 예시:

    gitlab:
      gitlab-shell:
        sshDaemon: gitlab-sshd
    
  2. Helm 업그레이드를 수행하세요.

기본적으로 gitlab-sshd는 다음에서 대기합니다:

  • 22번 포트(global.shell.port)로 외부 요청
  • 2222번 포트(gitlab.gitlab-shell.service.internalPort)로 내부 요청

Helm 차트에서 다른 포트를 구성할 수 있습니다.

PROXY 프로토콜 지원

gitlab-sshd 앞에 로드 밸런서를 사용할 때 GitLab은 실제 클라이언트의 IP 주소 대신 프록시의 IP 주소를 보고합니다. 실제 IP 주소를 얻기 위해 gitlab-sshdPROXY 프로토콜을 지원합니다.

리눅스 패키지 (Omnibus)

PROXY 프로토콜을 활성화하려면:

  1. /etc/gitlab/gitlab.rb 파일 편집:

    gitlab_sshd['proxy_protocol'] = true
    # Proxy 프로토콜 정책 ("use", "require", "reject", "ignore"); "use"가 기본값입니다
    gitlab_sshd['proxy_policy'] = "use"
    
  2. 파일을 저장하고 GitLab을 재구성합니다:

    sudo gitlab-ctl reconfigure
    
Helm 차트 (Kubernetes)
  1. gitlab.gitlab-shell.config 옵션을 설정하세요. 예시:

    gitlab:
      gitlab-shell:
        config:
          proxyProtocol: true
          proxyPolicy: "use"
    
  2. Helm 업그레이드를 수행하세요.