gitlab-sshd in GitLab Shell
gitlab-sshd는 gitlab-shell 내의 이진 파일로
지속적인 SSH 데몬으로 실행됩니다. 이는 GitLab SaaS에서 OpenSSH를 대체할
목적으로 설계되었으며, 궁극적으로 다른 클라우드 네이티브 환경에서도 사용됩니다.
sshd 프로세스를 실행하는 대신, 보다 집중된 방식으로 동일한 작업을 수행하는
gitlab-sshd 프로세스를 실행합니다:
%%{init: { "fontFamily": "GitLab Sans" }}%%
sequenceDiagram
participant Git on client
participant GitLab SSHD
participant Rails
participant Gitaly
participant Git on server
Note left of Git on client: git fetch
Git on client->>+GitLab SSHD: ssh git fetch-pack 요청
GitLab SSHD->>+Rails: GET /internal/api/authorized_keys?key=AAAA...
Note right of Rails: 키 ID 조회
Rails-->>-GitLab SSHD: 200 OK, command="gitlab-shell upload-pack key_id=1"
GitLab SSHD->>+Rails: GET /internal/api/allowed?action=upload_pack&key_id=1
Note right of Rails: 인증 확인
Rails-->>-GitLab SSHD: 200 OK, { gitaly: ... }
GitLab SSHD->>+Gitaly: SSHService.SSHUploadPack 요청
Gitaly->>+Git on server: git upload-pack 요청
Note over Git on client,Git on server: Git 클라이언트와 서버 간의 양방향 통신
Git on server-->>-Gitaly: git upload-pack 응답
Gitaly -->>-GitLab SSHD: SSHService.SSHUploadPack 응답
GitLab SSHD-->>-Git on client: ssh git fetch-pack 응답
도움말