gitlab-sshd
- GitLab 14.5에 실험적으로 도입되어 Self-managed 고객을 위한 것입니다.
- Cloud Native GitLab in GitLab 15.1 및 Linux packages in GitLab 15.9에서 프로덕션 사용 준비됨.
gitlab-sshd
는 Go로 작성된 독립적인 SSH 서버입니다. gitlab-shell
패키지의 일부로 제공됩니다. OpenSSH 대체로 메모리 사용량이 적고, 프록시 뒤에서 실행되는 애플리케이션을 위한 IP 주소별 그룹 접근 제한을 지원합니다.
gitlab-sshd
는 깃 오퍼레이션을 위한 OpenSSH의 경량 대안입니다. OpenSSH가 제한된 셸 접근 방식을 사용하는 반면, gitlab-sshd
는 모던한 멀티 스레드 서버 애플리케이션과 비슷하게 동작하여 들어오는 요청에 응답합니다. 주된 차이점은 OpenSSH가 운송 프로토콜로 SSH를 사용하는 반면, gitlab-sshd
는 Remote Procedure Calls (RPCs)를 사용한다는 것입니다. 자세한 내용은 블로그 게시물을 참조하십시오.
GitLab Shell의 기능은 깃 오퍼레이션에만 제한되지 않습니다.
OpenSSH에서 gitlab-sshd
로 전환을 고려 중이라면 다음 사항을 고려하세요:
-
gitlab-sshd
는 PROXY 프로토콜을 지원합니다. 이는 기존에 의존하던 HAProxy와 같은 프록시 서버에서 실행할 수 있습니다. PROXY 프로토콜은 기본적으로 활성화되지 않지만, 활성화할 수 있습니다. -
gitlab-sshd
는 SSH 인증서를 지원하지 않습니다. 이에 대한 토론은 이슈 655를 참조하십시오.
gitlab-sshd
활성화
gitlab-sshd
를 사용하려면:
다음 지침은 OpenSSH 대신 gitlab-sshd
를 다른 포트에서 활성화합니다:
-
/etc/gitlab/gitlab.rb
파일을 편집하세요:gitlab_sshd['enable'] = true gitlab_sshd['listen_address'] = '[::]:2222' # 포트를 조정하세요
-
선택 사항. Linux 패키지 설치는
/var/opt/gitlab/gitlab-sshd
에 존재하지 않는 경우,gitlab-sshd
를 위한 SSH 호스트 키를 생성합니다. 이 자동 생성을 비활성화하려면 다음 줄을 추가하세요:gitlab_sshd['generate_host_keys'] = false
-
파일을 저장하고 GitLab을 재구성하세요:
sudo gitlab-ctl reconfigure
기본적으로 gitlab-sshd
는 git
사용자로 실행됩니다. 결과적으로 gitlab-sshd
는 1024보다 낮은 권한 있는 포트에서 실행할 수 없습니다. 이는 사용자가 gitlab-sshd
포트로 Git에 액세스하거나 SSH 트래픽을 해당 gitlab-sshd
포트로 전달하는 로드 밸런서를 사용해야 함을 의미합니다.
새로 생성된 호스트 키가 OpenSSH 호스트 키와 다르기 때문에 사용자들은 호스트 키 경고를 볼 수 있습니다. 이를 해결하려면 호스트 키 생성을 비활성화하고 기존의 OpenSSH 호스트 키를 /var/opt/gitlab/gitlab-sshd
로 복사하는 것을 고려하십시오.
다음 지침은 OpenSSH를 gitlab-sshd
로 전환합니다:
-
gitlab-shell
차트의sshDaemon
옵션을gitlab-sshd
로 설정하세요. 예:gitlab: gitlab-shell: sshDaemon: gitlab-sshd
-
Helm 업그레이드를 수행하세요.
기본적으로 gitlab-sshd
는 다음에 대해 수신합니다:
- 포트 22의 외부 요청 (
global.shell.port
). - 포트 2222의 내부 요청 (
gitlab.gitlab-shell.service.internalPort
).
PROXY 프로토콜 지원
gitlab-sshd
앞에 로드 밸런서가 사용될 경우, GitLab은 실제 클라이언트 IP 주소 대신 프록시의 IP 주소를 보고합니다. gitlab-sshd
는 실제 IP 주소를 얻기 위해 PROXY 프로토콜을 지원합니다.
PROXY 프로토콜을 활성화하려면:
-
/etc/gitlab/gitlab.rb
파일을 편집하세요:gitlab_sshd['proxy_protocol'] = true # 프록시 프로토콜 정책 ("use", "require", "reject", "ignore"), 기본값은 "use"입니다 gitlab_sshd['proxy_policy'] = "use"
-
파일을 저장하고 GitLab을 재구성하세요:
sudo gitlab-ctl reconfigure
-
gitlab.gitlab-shell.config
옵션을 설정하세요. 예:gitlab: gitlab-shell: config: proxyProtocol: true proxyPolicy: "use"
-
Helm 업그레이드를 수행하세요.