GitLab Shell의 gitlab-sshd
GitLab v19.1요약
gitlab-sshd는 gitlab-shell에 포함된 바이너리로, 영구적인 SSH 데몬으로 실행됩니다.
gitlab-sshd는 gitlab-shell에 포함된 바이너리로,
영구적인 SSH 데몬으로 실행됩니다. GitLab.com과 궁극적으로는 다른 클라우드 네이티브 환경에서 OpenSSH를 대체하기 위한 것입니다. sshd 프로세스를 실행하는 대신,
동일한 역할을 보다 집중적인 방식으로 수행하는 gitlab-sshd 프로세스를 실행합니다:
Mermaid 다이어그램 (22줄)
소스 코드 보기
%%{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 request
GitLab SSHD->>+Rails: GET /internal/api/authorized_keys?key=AAAA...
Note right of Rails: Lookup key 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: Auth check
Rails-->>-GitLab SSHD: 200 OK, { gitaly: ... }
GitLab SSHD->>+Gitaly: SSHService.SSHUploadPack request
Gitaly->>+Git on server: git upload-pack request
Note over Git on client,Git on server: Bidirectional communication between Git client and server
Git on server-->>-Gitaly: git upload-pack response
Gitaly -->>-GitLab SSHD: SSHService.SSHUploadPack response
GitLab SSHD-->>-Git on client: ssh git fetch-pack response</code></pre></details></div>