GitLab Shell의 gitlab-sshd
GitLab Shell에서 영구적인 SSH 데몬으로 실행되는 `gitlab-sshd` 바이너리의 동작 방식과 시퀀스 다이어그램을 설명합니다.
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-&gt;&gt;+GitLab SSHD: ssh git fetch-pack request GitLab SSHD-&gt;&gt;+Rails: GET /internal/api/authorized_keys?key=AAAA... Note right of Rails: Lookup key ID Rails--&gt;&gt;-GitLab SSHD: 200 OK, command="gitlab-shell upload-pack key_id=1" GitLab SSHD-&gt;&gt;+Rails: GET /internal/api/allowed?action=upload_pack&amp;key_id=1 Note right of Rails: Auth check Rails--&gt;&gt;-GitLab SSHD: 200 OK, { gitaly: ... } GitLab SSHD-&gt;&gt;+Gitaly: SSHService.SSHUploadPack request Gitaly-&gt;&gt;+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--&gt;&gt;-Gitaly: git upload-pack response Gitaly --&gt;&gt;-GitLab SSHD: SSHService.SSHUploadPack response GitLab SSHD--&gt;&gt;-Git on client: ssh git fetch-pack response</code></pre></details></div>