GitLab에 SSH Key 등록
GitLab은 SSH 키를 사용하여 Git과 서버 간의 보안 통신을 지원합니다. SSH 프로토콜은 이 보안을 제공하며 매번 username이나 비밀번호를 제공하지 않고도 GitLab 원격 서버에 인증할 수 있습니다.
SSH를 지원하려면 GitLab은 OpenSSH 클라이언트 설치를 필요로 합니다. Windows 10뿐만 아니라 GNU/Linux 및 macOS에는 사전 설치되어 제공됩니다. 시스템에 SSH 버전 6.5 이상이 포함되어 있는지 확인하십시오. 현재 안전하지 않은 MD5 서명 체계는 제외됩니다. 다음 명령은 시스템에 설치된 SSH 버전을 반환합니다.
ssh -V
GitLab은 Microsoft Windows에서의 설치를 지원하지 않지만, SSH 키를 설정하여 Windows를 클라이언트로 설정할 수 있습니다.
SSH 키 옵션
GitLab은 RSA, DSA, ECDSA 및 ED25519 키 사용을 지원합니다.
- GitLab은 GitLab 11.0에서 DSA 키를 더 이상 사용하지 않습니다.
- Practical Cryptography With Go에서 언급했듯이 DSA와 관련된 보안 문제는 ECDSA에도 적용됩니다.
참고 : 사용 가능한 문서는 ED25519가 더 안전하다고 제안합니다. RSA 키를 사용하는 경우, 미국 국립 과학 기술 연구소는 간행물 800-57 Part 3 (PDF)에서 최소 2048비트의 키 사이즈를 권장합니다.
따라서, 본 문서는 ED25519 및 RSA 키 사용에 중점을 둡니다.
기존 SSH 키 검토
기존 SSH 키가 있는 경우, 이를 사용하여 GitLab 리포지터리와의 보안 연결을 지원할 수 있습니다. 기본적으로 Linux 및 macOS 시스템의 SSH 키는 사용자의 home 디렉터리에 있는 .ssh/ 하위 디렉터리에 저장됩니다. 다음 표에는 각 SSH 키 알고리즘에 대한 기본 파일 이름이 포함되어 있습니다.
Algorithm | Public key | Private key |
---|---|---|
ED25519 (권장) | id_ed25519.pub | id_ed25519 |
RSA (최소 2048비트 키 크기) | id_rsa.pub | id_rsa |
DSA (지원 중단됨) | id_dsa.pub | id_dsa |
ECDSA | id_ecdsa.pub | id_ecdsa |
새로운 SSH 키 페어 생성
ED25519 SSH 키
Practical Cryptography With Go라는 책은 ED25519 키가 RSA 키보다 더 안전하고 성능이 뛰어나다고 제안합니다. OpenSSH 6.5는 2014년에 ED25519 SSH 키를 도입했으므로, 현재 운영 체제에서 사용할 수 있습니다.
다음 명령을 사용하여 ED25519 키를 만들고 구성할 수 있습니다.
ssh-keygen -t ed25519 -C "<comment>"
이메일 주소와 같은 인용부호(“)로 감싼 코멘트를 함께 사용하는 -C
플래그는 SSH 키에 레이블을 지정하는 선택적 방법입니다.
다음과 유사한 응답이 표시됩니다.
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/user/.ssh/id_ed25519):
이후 아래에 있는 SSH 키 페어를 생성하는 공통 단계에 따라 진행하세요.
RSA SSH 키
SSH에 RSA 키를 사용하는 경우, US National Institute of Standards and Technology에서는 최소 2048비트의 키 사이즈를 사용하도록 권장합니다. 기본적 ssh-keygen
명령은 1024비트 RSA 키를 만듭니다.
다음 명령을 사용하여 RSA 키를 만들고 구성할 수 있습니다. 필요한 경우 최소 권장 키 사이즈인 2048
을 대체합니다.
ssh-keygen -t rsa -b 2048 -C "email@example.com"
이메일 주소와 같은 인용부호(“)로 감싼 코멘트를 함께 사용하는 -C 플래그는 SSH 키에 레이블을 지정하는 선택적 방법입니다.
다음과 유사한 응답이 표시됩니다.
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
이후 아래에 있는 SSH 키 페어를 생성하는 공통 단계에 따라 진행하세요.
참고 : OpenSSH 버전 7.8 이하 를 사용하는 경우, 인코딩과 관련된 문제를 고려하십시오.
SSH 키 페어를 생성하는 공통 단계
ED25519 키를 생성하든 RSA 키를 생성하든, ssh-keygen
명령으로 시작했습니다. 이 시점에서 명령줄에 다음 메시지가 표시됩니다(ED25519 키의 경우).
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/user/.ssh/id_ed25519):
SSH 키 페어가 아직 없고 배포 키를 생성하지 않는 경우, 제안된 파일 및 디렉터리를 수락합니다. SSH 클라이언트는 추가 구성없이 결과 SSH 키 페어를 사용합니다. 또는 새 SSH 키 페어를 다른 위치에 저장할 수 있습니다. 원하는 디렉토리와 파일 이름을 지정할 수 있습니다. 해당 SSH 키 페어를 특정 호스트 전용으로 지정할 수도 있습니다.
SSH 키를 저장할 파일을 지정한 후, SSH 키에 대한 문장형 암호(passphrase)를 설정할 수 있습니다.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
성공하면, ssh-keygen
명령이 ID와 개인 키를 저장한 위치에 대한 확인이 표시됩니다.
필요한 경우, 다음 명령을 사용하여 패스프레이즈(passphrase)를 업데이트할 수 있습니다.
ssh-keygen -p -f /path/to/ssh_key
RSA 키 및 버전 6.5에서 7.8까지의 OpenSSH
OpenSSH 7.8 이전에는 RSA 키의 기본 공개 키 지문이 MD5를 기반으로 했기 때문에 안전하지 않습니다.
OpenSSH 버전이 6.5에서 7.8 (포함) 사이에 있는 경우, -o
옵션과 함께 ssh-keygen
를 실행하여 개인 SSH 키를 보다 안전한 OpenSSH 형식으로 저장하십시오.
GitLab에서 사용할 RSA SSH 키 페어가 이미 있는 경우, 더 안전한 암호 암호화 형식을 사용하도록 업그레이드하는 것이 좋습니다. 다음 명령을 사용하여 수행할 수 있습니다.
ssh-keygen -o -f ~/.ssh/id_rsa
또는 다음 명령을 사용하여 보다 안전한 암호화 형식으로 새 RSA 키를 생성할 수 있습니다.
ssh-keygen -o -t rsa -b 4096 -C "email@example.com"
참고 : ssh-keygen man(매뉴얼) 페이지에서 언급했듯이, ED25519는 이미 더 안전한 OpenSSH 형식으로 키를 암호화합니다.
GitLab 계정에 SSH 키 추가
이제 생성한 SSH 키를 GitLab 계정에 복사할 수 있습니다. 이렇게 하려면 다음 단계를 따르십시오.
- 정보를 텍스트 형식으로 저장하는 위치에 public SSH 키를 복사합니다. 다음 옵션은 ED25519 키에 대한 정보를 해당 운영 체제의 클립 보드에 저장합니다.
macOS :
pbcopy < ~/.ssh/id_ed25519.pub
Linux (xclip 패키지 필요) :
xclip -sel clip < ~/.ssh/id_ed25519.pub
Windows의 Git Bash :
cat ~/.ssh/id_ed25519.pub | clip
RSA 키를 사용하는 경우, 그에 따라 대체하십시오.
- GitLab 인스턴스 URL로 이동하여 로그인합니다.
- 오른쪽 상단에서 아바타를 선택하고 Settings을 클릭합니다.
- SSH Keys를 클릭합니다.
- 복사한 공개 키를 Key 텍스트 박스에 붙여 넣습니다.
- Title 텍스트 박스에 Work Laptop 또는 Home Workstation과 같은 설명 이름이 포함되어 있는지 확인하십시오.
- "Expires at" 섹션 아래에 키의 만료일(선택 사항)을 포함합니다. ( GitLab 12.9에서 도입됨)
- Add key 버튼을 클릭합니다.
이 절차를 사용하여 "만료"된 SSH 키는 GitLab 워크플로우에서 유효합니다. GitLab에서 구성한 만료 날짜는 SSH 키 자체에 포함되어 있지 않으므로, 필요에 따라 공개 SSH 키를 계속 내보낼 수 있습니다.
참고 : 공개 SSH 키를 수동으로 복사한 경우, ssh-ed25519(또는 ssh-rsa)으로 시작하고 이메일 주소로 끝나는 전체 키를 복사했는지 확인하십시오.
모든 것이 올바르게 설정되었는지 테스트
SSH 키가 올바르게 추가되었는지 테스트하려면, 터미널에서 다음 명령을 실행합니다.
ssh -T gitlab@example.com
SSH를 통해 GitLab에 처음 연결할 때, 연결 중인 GitLab 호스트의 신뢰성을 확인해야 합니다. 예를 들어, example.com에 연결할 때, 신뢰할 수 있는 호스트 목록에 example.com을 추가하려면 yes
로 응답하십시오.
The authenticity of host '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)? yes
Warning: Permanently added 'example.com' (ECDSA) to the list of known hosts.
알려진 호스트 목록에 추가되면, GitLab 호스트의 신뢰성을 다시 한번 확인해야 합니다. 다시 위의 명령을 실행하고 Welcome to GitLab, @username
! 메시지를 받아야 합니다.
환영 메시지가 나타나지 않으면, 다음 명령을 사용하여 상세 모드에서 ssh
를 실행하여 문제를 해결할 수 있습니다.
ssh -Tvvv gitlab@example.com
기본이 아닌 SSH 키 페어 경로로 작업하기
GitLab SSH 키 페어에 기본이 아닌 파일 경로를 사용한 경우, GitLab 개인 SSH 키를 가리 키도록 SSH 클라이언트를 구성합니다.
이러한 변경을 수행하려면 다음 명령을 실행하십시오.
eval $(ssh-agent -s)
ssh-add <path to private SSH key>
이제 이러한 설정을 ~/.ssh/config
파일에 저장하십시오. 다음은 GitLab 전용 SSH 키의 두 가지 예입니다.
# 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 키는 계정에 바인딩되므로, GitLab에 고유해야 합니다. SSH 키는 SSH를 통해 코드를 푸시할 때 사용할 수 있는 유일한 식별자이므로, 단일 사용자에게 고유하게 매핑해야 합니다.
⚠️ 사전 동의 없이 2차 가공 및 영리적인 이용을 금하며, 온·오프라인에 무단 전재 또는 유포할 수 없습니다.