GitLab에서 SSH 키 사용
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
코드를 push하거나 pull할 때마다 사용자 이름과 비밀번호를 입력하지 않고 SSH 키를 사용하여 GitLab에 안전하게 인증합니다. GitLab에서 SSH 키를 사용하려면: 고급 SSH 키 구성에 대한 정보는 고급 SSH 키 구성을 참조하십시오.
코드를 push하거나 pull할 때마다 사용자 이름과 비밀번호를 입력하지 않고 SSH 키를 사용하여 GitLab에 안전하게 인증합니다.
GitLab에서 SSH 키를 사용하려면:
- 로컬 시스템에서 SSH 키 쌍을 생성합니다.
- GitLab 계정에 SSH 키를 추가합니다.
- GitLab에 대한 연결을 확인합니다.
고급 SSH 키 구성에 대한 정보는 고급 SSH 키 구성을 참조하십시오.
SSH 키란 무엇인가#
SSH는 공개 키와 개인 키의 두 키를 사용합니다.
- 공개 키는 배포할 수 있습니다.
- 개인 키는 보호해야 합니다.
공개 키를 업로드해도 기밀 데이터가 노출되지 않습니다. SSH 공개 키를 복사하거나 업로드해야 할 때 실수로 개인 키를 복사하거나 업로드하지 않도록 주의하십시오.
개인 키를 사용하여 커밋에 서명할 수 있으며, 이를 통해 GitLab 사용과 데이터가 더욱 안전해집니다. 이 서명은 공개 키를 사용하는 모든 사람이 확인할 수 있습니다.
자세한 내용은 비대칭 암호화(공개 키 암호화라고도 함)를 참조하십시오.
사전 요건#
GitLab과 SSH로 통신하려면 다음이 필요합니다:
- GNU/Linux, macOS, Windows 10에 사전 설치된 OpenSSH 클라이언트.
- SSH 버전 6.5 이상. 이전 버전은 안전하지 않은 MD5 서명을 사용합니다.
시스템에 설치된 SSH 버전을 보려면 ssh -V를 실행합니다.
지원되는 SSH 키 유형#
히스토리
- GitLab 16.3에서 최대 RSA 키 길이가 변경되었습니다.
GitLab과 통신하기 위해 다음 SSH 키 유형을 사용할 수 있습니다:
| 알고리즘 | 참고 |
|---|---|
| ED25519 (권장) | RSA 키보다 더 안전하고 성능이 좋습니다. OpenSSH 6.5(2014년)에서 도입되었으며 대부분의 운영 체제에서 사용 가능합니다. 모든 FIPS 시스템에서 완전히 지원되지 않을 수 있습니다. 자세한 내용은 이슈 367429를 참조하십시오. |
| ED25519_SK | 로컬 클라이언트와 GitLab 서버 모두에서 OpenSSH 8.2 이상이 필요합니다. |
| ECDSA_SK | 로컬 클라이언트와 GitLab 서버 모두에서 OpenSSH 8.2 이상이 필요합니다. |
| RSA | ED25519보다 덜 안전합니다. 사용하는 경우 GitLab은 최소 4096비트 키 크기를 권장합니다. Go 제한으로 인해 최대 키 길이는 8192비트입니다. 기본 키 크기는 ssh-keygen 버전에 따라 다릅니다. |
| ECDSA | DSA와 관련된 보안 이슈가 ECDSA 키에도 적용됩니다. |
기존 SSH 키 쌍 확인#
키 쌍을 만들기 전에 이미 키 쌍이 있는지 확인합니다.
-
홈 디렉토리로 이동합니다.
-
.ssh/하위 디렉토리로 이동합니다..ssh/하위 디렉토리가 없으면 홈 디렉토리에 없거나 이전에ssh를 사용한 적이 없는 것입니다. 후자의 경우 SSH 키 쌍을 생성해야 합니다. -
다음 형식 중 하나를 가진 파일이 있는지 확인합니다:
알고리즘 공개 키 개인 키 ED25519 (권장) id_ed25519.pubid_ed25519ED25519_SK id_ed25519_sk.pubid_ed25519_skECDSA_SK id_ecdsa_sk.pubid_ecdsa_skRSA (최소 4096비트 키 크기) id_rsa.pubid_rsaDSA (사용 중단됨) id_dsa.pubid_dsaECDSA id_ecdsa.pubid_ecdsa
SSH 키 쌍 생성#
기존 SSH 키 쌍이 없는 경우 새 키 쌍을 생성합니다:
-
터미널을 엽니다.
-
키 유형과 나중에 키를 식별하는 데 도움이 되는 선택적 설명을 사용하여
ssh-keygen -t를 실행합니다. 일반적으로 이메일 주소를 설명으로 사용합니다. 설명은.pub파일에 포함됩니다.예를 들어 ED25519의 경우:
ssh-keygen -t ed25519 -C "<comment>"4096비트 RSA의 경우:
ssh-keygen -t rsa -b 4096 -C "<comment>" -
Enter를 누릅니다. 다음과 유사한 출력이 표시됩니다:
Generating public/private ed25519 key pair. Enter file in which to save the key (/home/user/.ssh/id_ed25519): -
배포 키를 생성하거나 다른 키를 저장하는 특정 디렉토리에 저장하려는 경우가 아니라면 제안된 파일 이름과 디렉토리를 수락합니다.
SSH 키 쌍을 특정 호스트에 전용으로 사용할 수도 있습니다.
-
비밀번호 구문을 지정합니다:
Enter passphrase (empty for no passphrase): Enter same passphrase again:파일이 저장된 위치에 대한 정보를 포함한 확인이 표시됩니다. 공개 키와 개인 키가 생성됩니다.
-
ssh-agent에 개인 SSH 키를 추가합니다.예를 들어 ED25519의 경우:
ssh-add ~/.ssh/id_ed25519
GitLab 계정에 SSH 키 추가#
GitLab에서 SSH를 사용하려면 공개 키를 GitLab 계정에 복사합니다. GitLab은 개인 키에 액세스할 수 없습니다.
SSH 키를 추가하면 GitLab은 알려진 손상된 키 목록에 대해 확인합니다. 관련 개인 키가 공개적으로 알려져 있어 계정 액세스에 사용될 수 있으므로 손상된 키를 추가할 수 없습니다. 이 제한은 구성할 수 없습니다.
키가 차단된 경우 새 SSH 키 쌍을 생성합니다.
GitLab 계정에 SSH 키를 추가하려면:
-
공개 키 파일의 내용을 복사합니다. 수동으로 하거나 스크립트를 사용할 수 있습니다.
이 예시에서
id_ed25519.pub를 파일 이름으로 교체합니다. 예를 들어 RSA의 경우id_rsa.pub를 사용합니다.tr -d '\n' < ~/.ssh/id_ed25519.pub | pbcopyxclip -sel clip < ~/.ssh/id_ed25519.pubcat ~/.ssh/id_ed25519.pub | clip- GitLab에 로그인합니다.
- 오른쪽 상단 모서리에서 아바타를 선택합니다.
- Edit profile을 선택합니다.
- 왼쪽 사이드바에서 Access > SSH keys를 선택합니다.
- Add new key를 선택합니다.
- Key 상자에 공개 키의 내용을 붙여 넣습니다.
키를 수동으로 복사한 경우
ssh-rsa,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519,sk-ecdsa-sha2-nistp256@openssh.com또는sk-ssh-ed25519@openssh.com으로 시작하고 설명으로 끝날 수 있는 전체 키를 복사했는지 확인합니다. - Title 상자에
Work Laptop또는Home Workstation과 같은 설명을 입력합니다. - 선택사항. 키의 Usage type을 선택합니다.
Authentication,Signing또는 둘 다에 사용할 수 있습니다.Authentication & Signing이 기본값입니다. - 선택사항. 기본 만료 날짜를 수정하려면 Expiration date를 업데이트합니다. 자세한 내용은 SSH 키 만료를 참조하십시오.
- Add key를 선택합니다.
SSH 연결 확인#
SSH 키가 올바르게 추가되었는지 확인하고 GitLab 인스턴스에 연결할 수 있는지 확인합니다:
- 올바른 서버에 연결하고 있는지 확인하려면 SSH 호스트 키 지문을 식별합니다:
- GitLab.com의 경우 SSH 호스트 키 지문 문서를 참조합니다.
- GitLab Self-Managed 또는 GitLab Dedicated의 경우
https://gitlab.example.com/help/instance_configuration#ssh-host-keys-fingerprints를 참조합니다. 여기서gitlab.example.com은 GitLab 인스턴스 URL입니다.
- 터미널을 열고 다음 명령을 실행합니다:
- GitLab.com의 경우
ssh -T git@gitlab.com을 사용합니다. - GitLab Self-Managed 또는 GitLab Dedicated의 경우
ssh -T git@gitlab.example.com을 사용합니다. 여기서gitlab.example.com은 GitLab 인스턴스 URL입니다.
- GitLab.com의 경우
기본적으로 연결은
git사용자 이름을 사용하지만 GitLab Self-Managed 또는 GitLab Dedicated 관리자는 사용자 이름을 변경할 수 있습니다.-
첫 번째 연결 시 GitLab 호스트의 신뢰성을 확인해야 할 수 있습니다. 다음과 같은 메시지가 표시되면 화면의 지시를 따릅니다:
The authenticity of host 'gitlab.example.com (35.231.145.151)' can't be established. ECDSA key fingerprint is SHA256:HbW3g8zUjNSksFbqTiUWPWg2Bq1x8xdGUrliXFzSnUw. Are you sure you want to continue connecting (yes/no)?환영 메시지가 표시됩니다.
Welcome to GitLab, <username>!메시지가 표시되지 않으면 SSH 연결 문제를 해결할 수 있습니다.
SSH 키 보기#
계정의 SSH 키를 보려면:
- 오른쪽 상단 모서리에서 아바타를 선택합니다.
- Edit profile을 선택합니다.
- 왼쪽 사이드바에서 Access > SSH keys를 선택합니다.
기존 SSH 키가 페이지 하단에 나열됩니다. 정보에는 다음이 포함됩니다:
- 키의 제목
- 공개 지문
- 허용된 사용 유형
- 생성 날짜
- 마지막 사용 날짜
- 만료 날짜
SSH 키 제거#
SSH 키를 취소하거나 삭제하여 계정에서 영구적으로 제거할 수 있습니다.
키로 커밋에 서명한 경우 SSH 키를 제거하면 추가적인 영향이 있습니다. 자세한 내용은 제거된 SSH 키로 서명된 커밋을 참조하십시오.
SSH 키 취소#
히스토리
- GitLab 15.9에서 도입되었습니다.
SSH 키가 손상된 경우 키를 취소합니다.
사전 요건:
- SSH 키의 사용 유형이
Signing또는Authentication & Signing이어야 합니다.
SSH 키를 취소하려면:
- 오른쪽 상단 모서리에서 아바타를 선택합니다.
- Edit profile을 선택합니다.
- 왼쪽 사이드바에서 Access > SSH keys를 선택합니다.
- 취소하려는 SSH 키 옆에서 Revoke를 선택합니다.
- Revoke를 선택합니다.
SSH 키 삭제#
SSH 키를 삭제하려면:
- 오른쪽 상단 모서리에서 아바타를 선택합니다.
- Edit profile을 선택합니다.
- 왼쪽 사이드바에서 Access > SSH keys를 선택합니다.
- 삭제하려는 키 옆에서 Remove ([remove])를 선택합니다.
- Delete를 선택합니다.
SSH 키 만료#
계정에 SSH 키를 추가할 때 만료 날짜를 설정할 수 있습니다. 이 선택적 설정은 보안 위반 위험을 제한하는 데 도움이 됩니다.
SSH 키가 만료되면 더 이상 인증하거나 커밋에 서명하는 데 사용할 수 없습니다. 새 SSH 키를 생성하고 계정에 추가해야 합니다.
GitLab Self-Managed 및 GitLab Dedicated에서 관리자는 만료 날짜를 보고 키를 삭제할 때 참고로 사용할 수 있습니다.
GitLab은 만료되는 SSH 키를 매일 확인하고 알림을 보냅니다:
- 만료 7일 전 UTC 오전 1:00.
- 만료 당일 UTC 오전 2:00.
