InfoGrab DocsInfoGrab Docs

GitLab Shell 기능 목록

요약

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 archive

  • git clone

  • git pull

  • git push

Git 작업 타임아웃 (gitlab_shell_git_timeout)#

gitlab_shell_git_timeout 설정은 GitLab Shell이 실행하는 Git 가져오기(import) 및 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}

Personal Access Token#

사용자가 SSH와 함께 Personal Access Token을 사용할 수 있도록 합니다:

$ ssh git@<hostname> personal_access_token <name> <scope1[,scope2,...]> [ttl_days]

Token:   glpat-...
Scopes:  api
Expires: 2022-02-05

구성 옵션#

관리자는 SSH를 통한 PAT 생성을 제어할 수 있습니다. GitLab Shell에서 PAT 설정을 구성하려면:

Linux package (Omnibus)

  • /etc/gitlab/gitlab.rb 파일을 편집합니다.

  • 다음 구성을 추가하거나 수정합니다:

gitlab_shell['pat'] = { enabled: true, allowed_scopes: [] }

enabled: SSH를 통한 PAT 생성을 활성화하려면 true로, 비활성화하려면 false로 설정합니다.

  • allowed_scopes: SSH로 생성된 PAT에 허용할 범위(scope)의 배열입니다. 모든 범위를 허용하려면 빈 값([])으로 설정합니다.

  • 파일을 저장한 후 GitLab을 재시작합니다.

Helm chart (Kubernetes)

  • values.yaml 파일을 편집합니다:
gitlab:
  gitlab-shell:
    config:
      pat:
        enabled: true
        allowedScopes: []

enabled: SSH를 통한 PAT 생성을 활성화하려면 true로, 비활성화하려면 false로 설정합니다.

  • allowedScopes: SSH로 생성된 PAT에 허용할 범위(scope)의 배열입니다. 모든 범위를 허용하려면 빈 값([])으로 설정합니다.

  • 파일을 저장한 후 새 값을 적용합니다:

helm upgrade -f gitlab_values.yaml gitlab gitlab/gitlab

Docker

  • 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에 허용할 범위(scope)의 쉼표로 구분된 목록입니다. 모든 범위를 허용하려면 빈 값([])으로 설정합니다.

  • 파일을 저장한 후 GitLab 및 관련 서비스를 재시작합니다:

docker compose up -d

Self-compiled (source)

  • /home/git/gitlab-shell/config.yml 파일을 편집합니다:
pat:
  enabled: true
  allowed_scopes: []

enabled: SSH를 통한 PAT 생성을 활성화하려면 true로, 비활성화하려면 false로 설정합니다.

  • allowed_scopes: SSH로 생성된 PAT에 허용할 범위(scope)의 배열입니다. 모든 범위를 허용하려면 빈 값([])으로 설정합니다.

  • 파일을 저장한 후 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에는 영향을 주지 않습니다.

GitLab Shell 기능 목록

GitLab v19.1
원문 보기
요약

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 archive

  • git clone

  • git pull

  • git push

Git 작업 타임아웃 (gitlab_shell_git_timeout)#

gitlab_shell_git_timeout 설정은 GitLab Shell이 실행하는 Git 가져오기(import) 및 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}

Personal Access Token#

사용자가 SSH와 함께 Personal Access Token을 사용할 수 있도록 합니다:

$ ssh git@<hostname> personal_access_token <name> <scope1[,scope2,...]> [ttl_days]

Token:   glpat-...
Scopes:  api
Expires: 2022-02-05

구성 옵션#

관리자는 SSH를 통한 PAT 생성을 제어할 수 있습니다. GitLab Shell에서 PAT 설정을 구성하려면:

Linux package (Omnibus)

  • /etc/gitlab/gitlab.rb 파일을 편집합니다.

  • 다음 구성을 추가하거나 수정합니다:

gitlab_shell['pat'] = { enabled: true, allowed_scopes: [] }

enabled: SSH를 통한 PAT 생성을 활성화하려면 true로, 비활성화하려면 false로 설정합니다.

  • allowed_scopes: SSH로 생성된 PAT에 허용할 범위(scope)의 배열입니다. 모든 범위를 허용하려면 빈 값([])으로 설정합니다.

  • 파일을 저장한 후 GitLab을 재시작합니다.

Helm chart (Kubernetes)

  • values.yaml 파일을 편집합니다:
gitlab:
  gitlab-shell:
    config:
      pat:
        enabled: true
        allowedScopes: []

enabled: SSH를 통한 PAT 생성을 활성화하려면 true로, 비활성화하려면 false로 설정합니다.

  • allowedScopes: SSH로 생성된 PAT에 허용할 범위(scope)의 배열입니다. 모든 범위를 허용하려면 빈 값([])으로 설정합니다.

  • 파일을 저장한 후 새 값을 적용합니다:

helm upgrade -f gitlab_values.yaml gitlab gitlab/gitlab

Docker

  • 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에 허용할 범위(scope)의 쉼표로 구분된 목록입니다. 모든 범위를 허용하려면 빈 값([])으로 설정합니다.

  • 파일을 저장한 후 GitLab 및 관련 서비스를 재시작합니다:

docker compose up -d

Self-compiled (source)

  • /home/git/gitlab-shell/config.yml 파일을 편집합니다:
pat:
  enabled: true
  allowed_scopes: []

enabled: SSH를 통한 PAT 생성을 활성화하려면 true로, 비활성화하려면 false로 설정합니다.

  • allowed_scopes: SSH로 생성된 PAT에 허용할 범위(scope)의 배열입니다. 모든 범위를 허용하려면 빈 값([])으로 설정합니다.

  • 파일을 저장한 후 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에는 영향을 주지 않습니다.