고급 SSH 키 구성
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
특수 워크플로를 위한 고급 SSH 키 옵션을 구성합니다. GitLab 계정으로 SSH 키 기본 사용에 대한 정보는 GitLab에서 SSH 키 사용을 참조하십시오. ED25519_SK 또는 ECDSA_SK SSH 키를 생성하려면 OpenSSH 8.2 이상을 사용해야 합니다:
특수 워크플로를 위한 고급 SSH 키 옵션을 구성합니다.
GitLab 계정으로 SSH 키 기본 사용에 대한 정보는 GitLab에서 SSH 키 사용을 참조하십시오.
FIDO2 하드웨어 보안 키를 위한 SSH 키 쌍 생성#
ED25519_SK 또는 ECDSA_SK SSH 키를 생성하려면 OpenSSH 8.2 이상을 사용해야 합니다:
-
컴퓨터에 하드웨어 보안 키를 삽입합니다.
-
터미널을 엽니다.
-
키 유형 및 나중에 키를 식별하는 데 도움이 되는 선택적 설명과 함께
ssh-keygen -t를 실행합니다. 일반적인 옵션은 이메일 주소를 설명으로 사용하는 것입니다. 설명은.pub파일에 포함됩니다.예를 들어 ED25519_SK의 경우:
ssh-keygen -t ed25519-sk -C "<comment>"ECDSA_SK의 경우:
ssh-keygen -t ecdsa-sk -C "<comment>"보안 키가 FIDO2 상주 키를 지원하는 경우 SSH 키를 만들 때 이를 활성화할 수 있습니다:
ssh-keygen -t ed25519-sk -O resident -C "<comment>"-O resident는 키가 FIDO 인증자 자체에 저장되어야 함을 나타냅니다. 상주 키는ssh-add -K또는ssh-keygen -K로 보안 키에서 직접 로드할 수 있기 때문에 새 컴퓨터로 가져오기가 더 쉽습니다. -
Enter를 누릅니다. 다음과 유사한 출력이 표시됩니다:
Generating public/private ed25519-sk key pair. You may need to touch your authenticator to authorize key generation. -
하드웨어 보안 키의 버튼을 누릅니다.
-
제안된 파일 이름 및 디렉토리를 수락합니다:
Enter file in which to save the key (/home/user/.ssh/id_ed25519_sk): -
암호문을 지정합니다:
Enter passphrase (empty for no passphrase): Enter same passphrase again:파일이 저장된 위치에 대한 정보를 포함한 확인이 표시됩니다.
공개 및 개인 키가 생성됩니다. GitLab 계정에 공개 SSH 키를 추가합니다.
1Password를 사용한 SSH 키 쌍 생성#
1Password와 1Password 브라우저 확장을 사용하여 다음 중 하나를 수행할 수 있습니다:
- 새 SSH 키를 자동으로 생성합니다.
- 1Password 볼트의 기존 SSH 키를 사용하여 GitLab에 인증합니다.
- GitLab에 로그인합니다.
- 오른쪽 상단에서 아바타를 선택합니다.
- 프로필 편집을 선택합니다.
- 왼쪽 사이드바에서 액세스 > SSH 키를 선택합니다.
- 새 키 추가를 선택합니다.
- 키를 선택하면 1Password 도우미가 표시됩니다.
- 1Password 아이콘을 선택하고 1Password를 잠금 해제합니다.
- SSH 키 만들기를 선택하거나 공개 키를 채울 기존 SSH 키를 선택합니다.
- 제목 상자에
작업 노트북또는홈 워크스테이션과 같은 설명을 입력합니다. - 선택 사항. 키의 사용 유형을 선택합니다.
인증또는서명또는 둘 다에 사용할 수 있습니다.인증 및 서명이 기본값입니다. - 선택 사항. 기본 만료 날짜를 수정하려면 만료 날짜를 업데이트합니다.
- 키 추가를 선택합니다.
SSH 키로 1Password를 사용하는 방법에 대한 자세한 내용은 1Password 문서를 참조하십시오.
엔터프라이즈 사용자의 SSH 키 비활성화#
히스토리
- GitLab 18.8에서 도입.
전제 조건:
- 엔터프라이즈 사용자가 속한 그룹의 소유자 역할이 있어야 합니다.
그룹의 엔터프라이즈 사용자의 SSH 키를 비활성화하면:
- 엔터프라이즈 사용자가 새 SSH 키를 추가하지 못하게 됩니다.
- 엔터프라이즈 사용자의 기존 SSH 키를 비활성화합니다.
이는 그룹의 관리자인 엔터프라이즈 사용자에게도 적용됩니다.
엔터프라이즈 사용자의 SSH 키를 비활성화하려면:
- 상단 표시줄에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
- 설정 > 일반을 선택합니다.
- 권한 및 그룹 기능을 확장합니다.
- 엔터프라이즈 사용자에서 SSH 키 비활성화를 선택합니다.
- 변경 사항 저장을 선택합니다.
RSA 키 쌍을 더 안전한 형식으로 업그레이드#
OpenSSH 버전이 6.5와 7.8 사이인 경우 터미널을 열고 다음 명령을 실행하여 개인 RSA SSH 키를 더 안전한 OpenSSH 형식으로 저장할 수 있습니다:
ssh-keygen -o -f ~/.ssh/id_rsa
또는 다음 명령으로 더 안전한 암호화 형식으로 새 RSA 키를 생성할 수 있습니다:
ssh-keygen -o -t rsa -b 4096 -C "<comment>"
SSH 키 암호문 업데이트#
SSH 키의 암호문을 업데이트할 수 있습니다:
-
터미널을 열고 다음 명령을 실행합니다:
ssh-keygen -p -f /path/to/ssh_key -
프롬프트에서 암호문을 입력한 다음 Enter를 누릅니다.
단일 GitLab 인스턴스에서 다른 계정 사용#
단일 GitLab 인스턴스에 여러 계정을 연결하는 데 사용할 수 있습니다. 이전 주제의 명령을 사용하여 이를 수행할 수 있습니다. 그러나 IdentitiesOnly를 yes로 설정하더라도 Host 블록 외부에 IdentityFile이 있으면 로그인할 수 없습니다.
대신 ~/.ssh/config 파일에서 호스트에 별칭을 할당할 수 있습니다.
Host에는user_1.gitlab.com및user_2.gitlab.com과 같은 별칭을 사용합니다. 고급 구성은 유지 관리하기 더 어렵고,git remote와 같은 도구를 사용할 때 이 문자열이 더 이해하기 쉽습니다.IdentityFile에는 개인 키 경로를 사용합니다.
# User1 Account Identity
Host <user_1.gitlab.com>
Hostname gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/<example_ssh_key1>
# User2 Account Identity
Host <user_2.gitlab.com>
Hostname gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/<example_ssh_key2>
이제 user_1의 저장소를 복제하려면 git clone 명령에 user_1.gitlab.com을 사용합니다:
git clone git@<user_1.gitlab.com>:gitlab-org/gitlab.git
origin으로 별칭이 지정된 이전에 복제된 저장소를 업데이트하려면:
git remote set-url origin git@<user_1.gitlab.com>:gitlab-org/gitlab.git
개인 및 공개 키에는 민감한 데이터가 포함되어 있습니다. 파일의 권한이 귀하만 읽을 수 있고 다른 사람은 액세스할 수 없도록 설정되어 있는지 확인합니다.
다른 저장소에 다른 키 사용#
각 저장소에 다른 키를 사용할 수 있습니다.
터미널을 열고 다음 명령을 실행합니다:
git config core.sshCommand "ssh -o IdentitiesOnly=yes -i ~/.ssh/private-key-filename-for-this-repository -F /dev/null"
이 명령은 SSH 에이전트를 사용하지 않으며 Git 2.10 이상이 필요합니다. ssh 명령 옵션에 대한 자세한 내용은 ssh 및 ssh_config 모두에 대한 man 페이지를 참조하십시오.
다른 디렉토리에서 SSH 키 사용#
SSH 키 쌍이 기본 디렉토리에 없는 경우 개인 키를 저장한 위치를 가리키도록 SSH 클라이언트를 구성합니다.
-
터미널을 열고 다음 명령을 실행합니다:
eval $(ssh-agent -s) ssh-add <directory to private SSH key> -
~/.ssh/config파일에 이러한 설정을 저장합니다. 예를 들어:# GitLab.com Host gitlab.com PreferredAuthentications publickey IdentityFile ~/.ssh/gitlab_com_rsa # Private GitLab instance Host gitlab.company.com PreferredAuthentications publickey IdentityFile ~/.ssh/example_com_rsa
이러한 설정에 대한 자세한 내용은 SSH 구성 매뉴얼의 man ssh_config 페이지를 참조하십시오.
공개 SSH 키는 계정에 바인딩되기 때문에 GitLab에 고유해야 합니다. SSH 키는 SSH로 코드를 푸시할 때 보유한 유일한 식별자입니다. 단일 사용자에게 고유하게 매핑되어야 합니다.
Eclipse에서 EGit으로 SSH 사용#
EGit을 사용하는 경우 Eclipse에 SSH 키를 추가할 수 있습니다.
Microsoft Windows에서 SSH 사용#
Windows 10에서는 git 및 ssh가 미리 설치된 WSL 2와 함께 Windows Subsystem for Linux(WSL)를 사용하거나 PowerShell을 통해 SSH를 사용하기 위해 Git for Windows를 설치할 수 있습니다.
WSL에서 생성된 SSH 키는 Git for Windows에서 직접 사용할 수 없으며 그 반대도 마찬가지입니다. 둘 다 다른 홈 디렉토리를 가지기 때문입니다:
- WSL:
/home/<user> - Git for Windows:
C:\Users\<user>
동일한 키를 사용하기 위해 .ssh/ 디렉토리를 복사하거나 각 환경에서 키를 생성할 수 있습니다.
Windows 11을 실행 중이고 Windows용 OpenSSH를 사용하는 경우 HOME 환경 변수가 올바르게 설정되어 있는지 확인합니다. 그렇지 않으면 개인 SSH 키를 찾을 수 없을 수 있습니다.
대안 도구는 다음과 같습니다:
Git over SSH 이중 인증 사용#
Git over SSH에 대한 이중 인증(2FA)을 사용할 수 있습니다. ED25519_SK 또는 ECDSA_SK SSH 키를 사용해야 합니다. 자세한 내용은 지원되는 SSH 키 유형을 참조하십시오.
