GitHub용 SSH 키를 생성하는 방법
게시 됨: 2022-02-05Git과 GitHub는 모든 개발자에게 필수적인 도구입니다. 거의 모든 종류의 소프트웨어 개발 프로젝트에서 널리 사용됩니다.
Gitlab 및 Bitbucket과 같은 다른 Git 호스팅 서비스가 있지만 GitHub는 개발자에게 가장 인기 있는 선택입니다. 채용 담당자에게 더 매력적으로 보이도록 프로필을 편집할 수도 있습니다.
Git 및 GitHub를 사용하여 프로젝트를 구성하고 다른 개발자와 협업할 수 있으며 물론 Kinsta에서도 사용할 수 있습니다.
하지만 Git과 GitHub는 관련이 있는 다른 도구이기 때문에 각각을 사용하여 워크플로를 지속적으로 업데이트해야 합니다.
각 머신에 대해 SSH 키를 사용하는 것이 좋습니다. 따라서 이 자습서에서는 해당 키가 무엇인지, 몇 가지 장점, GitHub SSH 키를 생성 및 구성하는 방법을 배우게 됩니다.
시작하자!
SSH 키란 무엇입니까?
간단히 말해서 SSH 키는 인터넷을 통해 원격 컴퓨터에 안전하게 액세스할 수 있도록 SSH(Secure Shell) 프로토콜에 사용되는 자격 증명입니다. 일반적으로 해당 인증은 명령줄 환경에서 발생합니다.
이 프로토콜은 클라이언트-서버 아키텍처를 기반으로 합니다. 즉, 사용자(또는 "클라이언트")는 SSH 클라이언트라는 특수 소프트웨어를 사용하여 원격 서버에 로그인하고 명령을 실행해야 합니다. 이것은 기본적으로 터미널을 통해 GitHub에 인증할 때 수행하는 작업입니다.

그러나 SSH는 GitHub에만 사용되는 것은 아닙니다. Kinsta, Google Cloud 및 Amazon Web Services와 같은 다른 플랫폼에서 해당 서비스에 액세스하기 위한 보안 채널을 만드는 데 널리 사용됩니다.
이제 SSH 키가 실제로 어떻게 작동하는지 알아보려면 공개 키와 개인 키의 차이점을 이해해야 합니다.
공개 키와 개인 키
기본부터 시작하겠습니다.
SSH 프로토콜은 비대칭 암호화 라는 암호화 기술을 사용합니다. 이 용어는 복잡하고 이상하게 들릴지 모르지만 진실에서 멀어질 수는 없습니다.
기본적으로 비대칭 암호화는 공개 키와 개인 키라는 한 쌍의 키를 사용하는 시스템입니다.
짐작할 수 있듯이 공개 키는 누구와도 공유할 수 있습니다. 주요 목적은 데이터를 암호화하여 메시지를 비밀 코드 또는 암호문으로 변환하는 것입니다. 이 키는 일반적으로 인터넷을 통해 데이터를 보내기 전에 데이터를 암호화하기 위해 다른 시스템(예: 서버)으로 전송됩니다.
반면에 개인 키는 자신이 보관해야 하는 키입니다. 공개 키로 암호화된 데이터를 해독하는 데 사용됩니다. 그것 없이는 암호화된 정보를 해독할 수 없습니다.
이 방법을 사용하면 사용자와 서버가 정보를 전송하기 위한 안전한 통신 채널을 유지할 수 있습니다.
다음은 SSH를 통해 서버에 연결할 때 백그라운드에서 발생하는 일입니다.
- 클라이언트는 공개 키를 서버에 보냅니다.
- 서버는 클라이언트에게 개인 키를 사용하여 공개 키로 암호화된 임의의 메시지에 서명하도록 요청합니다.
- 클라이언트는 메시지에 서명하고 결과를 서버에 전달합니다.
- 클라이언트와 서버 간에 보안 연결이 설정됩니다.
개인 키를 안전하게 유지하고 어떤 상황에서도 누구와도 공유하는 것이 중요합니다. 그들은 말 그대로 당신에게 보내는 모든 정보의 열쇠입니다.
GitHub에서 SSH 키 사용
2021년 8월 13일부터 Github은 더 이상 명령줄 액세스에 대한 암호 인증을 허용하지 않습니다. 즉, 이제 개인 액세스 토큰을 통해 인증하거나 SSH 키를 사용해야 합니다(조금 더 편리함).
다음은 터미널에서 HTTP를 통해 GitHub 비밀번호로 인증을 시도할 때 발생하는 일입니다.
Username for 'https://github.com': yourusername Password for 'https://[email protected]': remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead. remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information. fatal: Authentication failed for 'https://github.com/yourusername/repository.git/'
GitHub는 SSH를 통해 저장소를 편집할 수 있는 권한을 부여하려면 공개 키가 필요합니다.
SSH 키를 로컬에서 생성하는 방법을 살펴보겠습니다.
SSH 키를 로컬에서 생성하는 방법
이제 SSH 프로토콜과 공개 키와 개인 키의 차이점에 대해 조금 이해했으므로 머신과 GitHub 저장소 간에 보안 SSH 채널을 설정할 차례입니다.
계속 진행하기 전에 이미 GitHub 계정이 있어야 하고 시스템에 Git이 설치된 터미널/명령 프롬프트가 있어야 합니다. Windows를 실행하는 경우 이 자습서를 따라 수행하는 데 필요한 모든 도구가 내장된 Git bash를 설치했는지 확인하십시오.
OpenSSH 클라이언트는 SSH를 통해 연결하는 데 사용되는 가장 널리 사용되는 오픈 소스 소프트웨어입니다. Linux, macOS 및 Windows 10에 기본적으로 설치되어 있기 때문에 운영 체제에 대해 걱정할 필요가 없습니다.
로컬 SSH 키를 생성하려면 Windows에서 명령 프롬프트를 실행하거나 Unix 기반 시스템에서 터미널을 실행해야 합니다. 일반적으로 응용 프로그램 패널에서 "터미널", "cmd" 또는 "powershell"을 검색한 다음 표시되는 아이콘을 클릭하면 됩니다.

이 작업을 수행하면 다음 이미지와 유사한 창이 나타납니다.

다음 명령을 실행하여 로컬 SSH 키 쌍을 생성합니다.
ssh-keygen -t ed25519 -C "[email protected]"
이제 비밀을 말할 시간입니다. 아무도 이 명령을 기억할 수 없습니다! 대부분의 개발자는 다음과 같은 이유로 매번 Google에 검색해야 합니다.
- 잊을 수 있고 무작위로 보이는 숫자가 포함된 정말 긴 명령입니다.
- 우리는 거의 사용하지 않으므로 대부분의 시간을 메모리에 커밋할 가치가 없습니다.
그러나 터미널에 도입한 각 명령을 이해하는 것이 중요하므로 이 명령의 각 부분이 의미하는 바를 살펴보겠습니다.
- ssh-keygen: 새 SSH 키 쌍을 만드는 데 사용되는 명령줄 도구입니다.
ssh-keygen help
로 플래그를 볼 수 있습니다. - -t ed25519:
-t
플래그는 키 쌍의 디지털 서명을 만드는 데 사용되는 알고리즘을 나타내는 데 사용됩니다. 시스템이 지원하는 경우ed25519
가 SSH 키 쌍을 생성하는 데 사용할 수 있는 최고의 알고리즘입니다. - -C "email":
-c
플래그는 일반적으로 키 쌍 작성자의 이메일 또는 ID인 공개 키 끝에 사용자 정의 주석을 제공하는 데 사용됩니다.
터미널에 명령을 입력한 후 키를 저장할 파일을 입력해야 합니다. 기본적으로 ".ssh"라는 숨겨진 폴더의 홈 디렉토리에 있지만 원하는 대로 변경할 수 있습니다.
그런 다음 키 쌍에 추가할 암호를 입력하라는 메시지가 표시됩니다. 이는 언제든지 장치가 손상되는 경우 보안 계층을 추가합니다. 암호를 반드시 추가해야 하는 것은 아니지만 항상 권장합니다.
전체 프로세스는 다음과 같습니다.

보시다시피, 이 명령은 선택한 디렉토리(일반적으로 ~/.ssh )에 두 개의 파일을 생성합니다. 하나는 .pub
확장자를 가진 공개 키이고 다른 하나는 확장자가 없는 개인 키입니다.

나중에 GitHub 계정에 공개 키를 추가하는 방법을 보여드리겠습니다.
ssh-agent에 SSH 키 추가
ssh-agent 프로그램은 백그라운드에서 실행되고 개인 키와 암호를 안전하게 보관하며 ssh에서 사용할 수 있도록 준비합니다. 서버에 연결할 때마다 암호를 입력하지 않아도 되는 훌륭한 유틸리티입니다.
이 때문에 이 에이전트에 새 개인 키를 추가하게 됩니다. 방법은 다음과 같습니다.
- ssh-agent가 백그라운드에서 실행 중인지 확인하십시오.
eval `ssh-agent` # Agent pid 334065
모든 것이 정상이면 이와 유사한 메시지가 표시됩니다. 이는 ssh-agent가 특정 프로세스 ID(PID)로 실행되고 있음을 의미합니다.
- SSH 개인 키(확장자가 없는 키)를 ssh-agent에 추가하십시오.
ssh-add ~/.ssh/kinsta_keys
kinsta_keys 를 SSH 키 이름으로 바꿉니다. 이것이 여러분이 만든 첫 번째 키인 경우 "id_algorithm_used"로 이름을 지정해야 합니다(예: id_ed25519 ).
GitHub 계정에 SSH 키 추가
마지막 단계는 공개 키를 GitHub 계정에 추가하는 것입니다. 다음 지침을 따르세요.
- SSH 공개 키를 클립보드에 복사합니다. 텍스트 편집기로 파일이 있는 위치에서 파일을 열고 복사하거나 터미널을 사용하여 내용을 표시할 수 있습니다.
cat ~/.ssh/kinsta_keys.pub # ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJl3dIeudNqd0DPMRD6OIh65tjkxFNOtwGcWB2gCgPhk [email protected]
- GitHub에 로그인 ] 페이지의 오른쪽 상단 섹션으로 이동하여 프로필 사진을 클릭하고 설정을 선택합니다.
깃허브 설정. - 그런 다음 설정 프로필에서 SSH 및 GPG 키 를 클릭합니다.
SSH 및 GPG 키. - 새 SSH 키 버튼을 클릭합니다.
새로운 SSH 키 버튼. - GitHub 제목 에 새 SSH 키를 지정합니다. 일반적으로 해당 키를 사용할 장치입니다. 그런 다음 키를 키 영역에 붙여넣습니다.
새 SSH 키 양식을 추가하십시오. - SSH 키를 추가합니다.
SSH 키 추가 버튼.
Repo 푸시로 SSH 연결 테스트
지금까지 수행한 모든 작업을 테스트할 시간입니다. SSH를 사용하여 기존 저장소 중 하나를 변경, 커밋 및 푸시하여 연결이 올바르게 설정되었는지 확인합니다.
모든 Kinsta 호스팅 계획에는 베테랑 WordPress 개발자 및 엔지니어의 연중무휴 지원이 포함됩니다. Fortune 500대 고객을 지원하는 동일한 팀과 채팅하십시오. 우리의 계획을 확인하십시오!
이 예에서는 웹 개발을 위한 Git 자습서에서 만든 간단한 HTML 사이트를 수정합니다.
먼저 저장소를 로컬 시스템에 복제해야 합니다. GitHub의 repo 페이지로 이동하여 제공하는 SSH 주소를 복사할 수 있습니다.

그런 다음 터미널을 사용하여 리포지토리를 복제합니다.
git clone [email protected]:DaniDiazTech/HTML-site.git
이제 index.html 파일에 간단한 <h1>
태그를 추가해 보겠습니다.
... <div class="container my-2"> <h1 class="text-center">A new title!<h1> </div> <div class="container my-3"> ...

이 편집을 간단하게 유지하기 위해 JavaScript 또는 CSS를 건드리지 않습니다. 그러나 JavaScript에 능숙하다면 Kinsta에서 자리를 찾을 수 있습니다. Kinsta 팀의 일원이 되기 위해 필요한 코딩 기술을 확인하세요.
이 작업을 수행한 후 변경 사항을 커밋합니다.
git commit -am "Added a simple title"
그리고 평소처럼 GitHub에 푸시하세요.
git push
모든 것이 잘 되었다면 축하합니다! 머신과 GitHub 간에 SSH 연결을 설정하기만 하면 됩니다.
다른 GitHub 계정에 대한 여러 SSH 키 관리
여러 GitHub 계정이 있는 경우(예: 개인 프로젝트용과 업무용) 두 계정 모두에 SSH를 사용하기 어렵습니다. 일반적으로 다른 GitHub 계정에 인증하려면 별도의 시스템이 필요합니다.
그러나 이것은 SSH 구성 파일을 구성하면 쉽게 해결할 수 있습니다.
들어가 봅시다.
- 다른 SSH 키 쌍을 만들고 다른 GitHub 계정에 추가합니다. 새 키를 할당할 파일의 이름을 기억해 두십시오.
ssh-keygen -t ed25519 -C "[email protected]"
- SSH 구성 파일을 만듭니다. 구성 파일은 ssh 프로그램이 어떻게 동작해야 하는지 알려줍니다. 기본적으로 구성 파일이 없을 수 있으므로 .ssh/ 폴더 안에 생성합니다.
touch ~/.ssh/config
- SSH 구성 파일을 수정합니다. 구성 파일을 열고 아래 코드를 붙여넣습니다.
#Your day-to-day GitHub account Host github.com HostName github.com IdentityFile ~/.ssh/id_ed25519 IdentitiesOnly yes # Work account Host github-work HostName github.com IdentityFile ~/.ssh/work_key_file IdentitiesOnly yes
이제 직장 또는 보조 계정을 사용하여 SSH를 통해 인증해야 할 때마다 다음에서 repo SSH 주소를 약간 조정합니다.
[email protected]:workaccount/project.git
…에게:
[email protected]:workaccount/project.git
요약
축하합니다. SSH를 통해 GitHub에 연결하는 데 필요한 실용적인 지식을 대부분 배웠습니다!
이 튜토리얼에서는 SSH 프로토콜의 필요성, 공개 키와 개인 키의 차이점, 키를 생성하고 GitHub에 추가하는 방법, 다양한 GitHub 계정에 대해 여러 SSH 키를 관리하는 방법에 대해 설명했습니다. 모든 것에 대한 액세스 권한을 잃고 싶지 않다면 개인 키는 비공개로 유지되어야 합니다.
이 지식을 통해 이제 Git 및 GitHub를 사용하여 완벽한 워크플로를 개발할 준비가 되었습니다. 계속 코딩하세요!