GitLab Shell 기능 목록
GitLab v19.4요약
사용자가 SSH로 인스턴스에서 본인 인증을 할 수 있게 합니다. GitLab Shell은 git-upload-pack, git-receive-pack, git-upload-archive SSH 명령을 처리해 SSH를 통한 Git 작업을 지원합니다.
Discover#
사용자가 SSH로 인스턴스에서 본인 인증을 할 수 있게 합니다. 이 명령으로 사용자가 인스턴스에 SSH로 접근할 수 있는지 빠르게 확인할 수 있습니다:
ssh git@<hostname>
PTY allocation request failed on channel 0
Welcome to GitLab, @username!
Connection to staging.gitlab.com closed.
권한이 거부되면 다음을 반환합니다:
ssh git@<hostname>
git@<hostname>: Permission denied (publickey).
Git 작업#
GitLab Shell은 git-upload-pack, git-receive-pack, git-upload-archive SSH 명령을
처리해 SSH를 통한 Git 작업을 지원합니다.
사용할 수 있는 명령은 다음의 미리 정의된 Git 명령으로 제한됩니다:
git archivegit clonegit pullgit push
Git 작업 타임아웃 (gitlab_shell_git_timeout)#
gitlab_shell_git_timeout 설정은 GitLab Shell이 실행하는 Git 가져오기 및 fetch 작업의 타임아웃을 초 단위로 지정합니다. 여기에는 Geo 보조 노드가 수행하는 리포지터리 동기화도 포함됩니다.
기본값#
기본 타임아웃은 10800초(3시간)입니다.
설정을 조정해야 하는 경우#
다음과 같은 경우에는 이 값을 늘려야 할 수 있습니다:
- 큰 리포지터리를 동기화하는 경우, 특히 Geo 배포 환경
- 느리거나 제한된 네트워크 연결에서 운영하는 경우
- 여러 시간이 지난 뒤 Git 작업이 타임아웃 관련 오류로 실패하는 경우
타임아웃이 너무 짧으면 데이터 전송이 계속 진행 중인데도 Git 작업이 완료 전에 종료될 수 있습니다.
새 2FA 복구 코드 생성#
사용자가 새 2FA 복구 코드를 생성할 수 있게 합니다:
$ ssh git@<hostname> 2fa_recovery_codes
Are you sure you want to generate new two-factor recovery codes?
Any existing recovery codes you saved will be invalidated. (yes/no)
yes
Your two-factor authentication recovery codes are:
...
2FA OTP 검증#
사용자가 2FA 일회용 비밀번호(OTP)를 검증할 수 있게 합니다:
$ ssh git@<hostname> 2fa_verify
OTP: 347419
OTP validation failed.
LFS 인증#
사용자가 LFS 인증용 자격 증명을 생성할 수 있게 합니다:
$ ssh git@<hostname> git-lfs-authenticate <project-path> <upload/download>
{"header":{"Authorization":"Basic ..."},"href":"https://gitlab.com/user/project.git/info/lfs","expires_in":7200}
개인 액세스 토큰#
사용자가 SSH로 개인 액세스 토큰을 사용할 수 있게 합니다:
$ ssh git@<hostname> personal_access_token <name> <scope1[,scope2,...]> [ttl_days]
Token: glpat-...
Scopes: api
Expires: 2022-02-05
구성 옵션#
관리자는 SSH를 통한 PAT 생성을 제어할 수 있습니다. GitLab Shell에서 PAT 설정을 구성하려면 다음 단계를 수행합니다:
-
/etc/gitlab/gitlab.rb파일을 편집합니다. -
다음 설정을 추가하거나 수정합니다:
gitlab_shell['pat'] = { enabled: true, allowed_scopes: [] }enabled: SSH를 통한 PAT 생성을 활성화하려면true, 비활성화하려면false로 설정합니다.allowed_scopes: SSH로 생성한 PAT에 허용되는 범위의 배열입니다. 모든 범위를 허용하려면 비워 둡니다([]).
-
파일을 저장하고 GitLab을 재시작합니다.
-
values.yaml파일을 편집합니다:gitlab: gitlab-shell: config: pat: enabled: true allowedScopes: []enabled: SSH를 통한 PAT 생성을 활성화하려면true, 비활성화하려면false로 설정합니다.allowedScopes: SSH로 생성한 PAT에 허용되는 범위의 배열입니다. 모든 범위를 허용하려면 비워 둡니다([]).
-
파일을 저장하고 새 값을 적용합니다:
helm upgrade -f gitlab_values.yaml gitlab gitlab/gitlab
-
docker-compose.yaml파일을 편집합니다:services: gitlab: environment: GITLAB_OMNIBUS_CONFIG: | gitlab_shell['pat'] = { enabled: true, allowed_scopes: [] }enabled: SSH를 통한 PAT 생성을 활성화하려면'true', 비활성화하려면'false'로 설정합니다.allowed_scopes: SSH로 생성한 PAT에 허용되는 범위를 쉼표로 구분한 목록입니다. 모든 범위를 허용하려면 비워 둡니다([]).
-
파일을 저장하고 GitLab과 그 서비스를 재시작합니다:
docker compose up -d
-
/home/git/gitlab-shell/config.yml파일을 편집합니다:pat: enabled: true allowed_scopes: []enabled: SSH를 통한 PAT 생성을 활성화하려면true, 비활성화하려면false로 설정합니다.allowed_scopes: SSH로 생성한 PAT에 허용되는 범위의 배열입니다. 모든 범위를 허용하려면 비워 둡니다([]).
-
파일을 저장하고 GitLab Shell을 재시작합니다:
# For systems running systemd sudo systemctl restart gitlab-shell.target # For systems running SysV init sudo service gitlab-shell restart
이 설정은 SSH를 통한 PAT 생성에만 영향을 주며, 웹 인터페이스로 생성한 PAT에는 영향을 주지 않습니다.