고급 SSH 키 구성
GitLab v19.2- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated GitLab에서 SSH 키 사용을 참조하십시오. ED25519_SK 또는 ECDSA_SK SSH 키를 생성하려면 OpenSSH 8.2 이상을 사용해야 합니다:
고급 SSH 키 구성#
-
Tier: Free, Premium, Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
특수 워크플로를 위한 고급 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 키를 선택합니다.
-
제목 상자에
Work Laptop또는Home Workstation과 같은 설명을 입력합니다. -
선택 사항. 키의 사용 유형을 선택합니다.
Authentication또는Signing또는 둘 다에 사용할 수 있습니다.Authentication & Signing이 기본값입니다. -
선택 사항. 기본 만료 날짜를 수정하려면 만료 날짜를 업데이트합니다.
-
키 추가를 선택합니다.
SSH 키로 1Password를 사용하는 방법에 대한 자세한 내용은 1Password 문서를 참조하십시오.
엔터프라이즈 사용자의 SSH 키 비활성화#
History
- GitLab 18.8에서 도입.
전제 조건:
- 엔터프라이즈 사용자가 속한 그룹의 Owner 권한이 있어야 합니다.
그룹의 엔터프라이즈 사용자의 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로 코드를 푸시할 때 보유한 유일한 식별자입니다. 단일 사용자에게 고유하게 매핑되어야 합니다.
SSH 키를 다른 디바이스로 이동#
개인 키 파일을 복사하여 여러 디바이스에서 동일한 SSH 키를 사용할 수 있습니다. GitLab에서 아무것도 변경할 필요가 없습니다.
보안을 강화하려면 각 디바이스에 대해 [새 SSH 키를 생성](/19.2/user/ssh/#generate-an-ssh-key-pair)하는 것을 고려하십시오. 이렇게 하면 분실하거나 손상된 디바이스의 영향을 최소화할 수 있습니다.
SSH 키를 다른 디바이스로 이동하려면:
원본 디바이스에서 기존 SSH 키 쌍을 찾습니다.
새 디바이스의 ~/.ssh/ 디렉터리에 파일을 복사합니다.
이메일, 채팅 또는 암호화되지 않은 클라우드 동기화 서비스를 통해 개인 키를 전송하지 마십시오.
패스워드 관리자 또는 암호화된 USB 드라이브와 같은 암호화된 전송 방법을 사용하십시오.
새 디바이스에서 터미널을 엽니다.
자신만 개인 키를 읽을 수 있도록 권한을 설정합니다. 예를 들어 ED25519의 경우:
chmod 600 ~/.ssh/id_ed25519
SSH 에이전트에 키를 추가합니다:
eval $(ssh-agent -s)
ssh-add ~/.ssh/id_ed25519
키가 GitLab과 인증되는지 확인합니다. 자세한 내용은 SSH 연결 확인을 참조하십시오.
FIDO2 하드웨어 보안 키에 저장된 SSH 키의 경우 개인 키 파일을 복사하지 마십시오.
대신 ssh-add -K로 보안 키에서 키를 가져옵니다. 자세한 내용은
FIDO2 하드웨어 보안 키를 위한 SSH 키 쌍 생성을 참조하십시오.
Microsoft Windows에서 WSL과 Git for Windows 환경은 서로 다른 홈 디렉터리를 사용합니다. 자세한 내용은 Microsoft Windows에서 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 키 유형을 참조하십시오.