기존의 GitHub 인증 방법은 액세스 토큰이나 비밀번호를 사용하는 경우가 많습니다. 그러나 이러한 방식은 번거로울 수 있으며, 특히 여러 기기에서 플랫폼에 액세스할 때 잠재적인 보안 위험을 초래할 수 있습니다.
GitHub는 원격 컴퓨터 액세스를 위해 설계된 보안 네트워크 프로토콜인 보안 셸(SSH)을 인증 목적으로 활용할 수 있는 가능성을 제공합니다. 이 기능은 자동화 또는 잦은 원격 액세스가 필요한 시나리오에서 특히 유용합니다.
SSH 인증 이해
SSH를 통한 인증 프로세스에는 로컬 컴퓨터의 클라이언트와 원격 서버(GitHub) 사이에 보안 링크(터널)를 쉽게 설정할 수 있는 암호화 키가 적용됩니다.
GitHub에 액세스하기 위해 보안 셸(SSH) 프로토콜을 사용하면 사용자가 공개 키와 개인 키라는 두 개의 암호화 키를 생성하게 됩니다. 전자는 사용자의 GitHub 계정에 업로드되지만, 후자는 사용자의 로컬 장치에 기밀로 유지됩니다.
이 프로세스와 자물쇠와 열쇠의 개념을 비유하면 그 기능을 설명하는 데 도움이 될 수 있습니다. 이 시나리오에서 공개 키는 접근 가능하고 안전한 신원 확인 수단으로 작동하며, 기밀로 유지되고 사용자의 장치에만 저장되는 개인 키의 보완 요소로 사용됩니다. 이러한 방식을 통해 클라이언트와 서버 간에 신뢰를 구축하여 원활한 통신과 인증이 가능합니다.
GitHub로 인증할 때 로컬 컴퓨터는 식별 토큰으로 개인 암호화 키를 제시합니다. 그런 다음 서버는 이 개인 키를 면밀히 조사하여 GitHub 계정에 연결된 서버 측에 저장된 공개 키와 일치하는지 확인합니다. 두 키가 모두 일치하는 경우 서버는 클라이언트와 서버 간의 통신을 위한 보안 및 암호화된 채널을 설정하여 사용자의 진위를 확인합니다.
GitHub용 SSH 설정하기
GitHub 인증을 위한 보안 셸(SSH) 구성 과정을 좀 더 세분화하여 설명해 드리겠습니다.
SSH 키 쌍 생성 중
SSH 키 쌍 생성을 시작하면 SSH를 통한 보안 인증 여정이 시작됩니다.
터미널 창 또는 명령 프롬프트를 열어 컴퓨터 인터페이스와의 통신을 시작합니다.
`ssh-keygen -t rsa -b 4096 -C “[email protected]”`
SSH 키 쌍을 저장할 디렉터리를 입력하거나 기본 위치(.ssh/id\_rsa)를 사용하려면 “Enter”를 누르세요.
비밀번호를 입력하세요(선택 사항이지만 보안 강화를 위해 적극 권장합니다). 이 비밀번호는 어디에도 저장되지 않으므로 기억해 두시기 바랍니다.
키 쌍을 생성한 후 지정된 위치에 개인 키와 관련된 “id\_rsa”와 공개 키를 참조하는 “id\_rsa.pub” 두 개의 파일이 나타납니다.
프로세스가 완료되면 시각적으로 매혹적인 랜덤 아트 이미지와 함께 고유한 디지털 지문이 사용자에게 표시되어 보는 즐거움을 선사합니다.
cat ~/.ssh/id_rsa.pub
키가 생성된 위치, 특히 이 경우 ~/.ssh/id\_rsa.pub에 지정된 경로를 확인하시기 바랍니다.
이 명령은 사용자가 나중에 다시 액세스하기 위해 콘텐츠를 임시로 저장하도록 요구합니다.
GitHub에 공개 키 추가하기
생성된 SSH 키 쌍을 사용하려면 GitHub 계정에 공개 키를 통합해야 합니다.
GitHub 계정에 로그인한 후 계정 설정 섹션으로 이동하세요.
⭐ 왼쪽 사이드바에 있는 SSH 및 GPG 키를 클릭합니다.
“새 SSH 키” 옵션을 클릭하면 완전히 새로운 공개-개인 키 쌍을 생성하기 위해 원하는 정보를 입력하라는 메시지가 나타납니다.
사용자의 공개 키 세트에 추가적인 컨텍스트와 구성을 제공하기 위해 SSH 키에 레이블 또는 제목을 지정할 수 있습니다.
⭐ 공개 키 콘텐츠를 키 필드에 붙여넣습니다.
⭐ 마지막으로 SSH 키 추가를 클릭하여 SSH 키를 GitHub 계정에 저장합니다.
앞서 설명한 단계를 사용하여 공개 키를 GitHub 계정으로 내보내는 프로세스가 문제 없이 실행되었습니다.
SSH 에이전트 구성하기
보안 셸(SSH) 에이전트는 SSH 키를 쉽게 관리하고 안전하게 저장 및 활용할 수 있는 수단을 제공하는 소프트웨어 애플리케이션입니다. 에이전트는 SSH 로그인 확인 중에 사용자의 로컬 장치와 원격 호스트 사이에서 중개자 역할을 수행하여 사용자가 다양한 GitHub 계정과 연결된 여러 SSH 키를 감독할 수 있도록 합니다.
보안 셸(SSH) 에이전트 프로세스가 활성화되어 있고 작동 중인지 확인합니다.
SSH 에이전트에 개인 키를 추가하세요.
키를 관리하기 위한 SSH 에이전트 구성 프로세스가 성공적으로 실행되었습니다.
SSH 연결 테스트 중
SSH 연결이 올바르게 설정 및 구성되었으므로 GitHub를 통해 인증할 수 있습니다.
다음 명령을 실행하여 GitHub와의 보안 셸(SSH) 연결을 확인하세요. 모든 것이 정상적으로 진행되면 지문과 관련된 경고가 표시됩니다. 지문을 확인하고 “예”로 응답하면 계속 진행하실 수 있습니다.
> Warning: Permanently added 'github.com,140.92.130.4' (ECDSA) to the list of known hosts.
> Hi princewillingoo! You've successfully authenticated, but GitHub does not provide shell access.
.
앞서 언급한 결과는 인증 프로세스가 성공적으로 완료되었음을 의미합니다.
SSH로 리포지토리 관리하기
SSH 설정을 활용하면 비밀번호 기반 인증이나 토큰 관리가 필요 없이 리포지토리 액세스를 안전하게 감독할 수 있습니다.
웹에서 데이터를 업로드할 위치를 지정하는 프로세스를 원격 URL 설정이라고 할 수 있습니다.
git remote set-url origin [email protected]:<username>/<repository>.git
기존 리포지토리의 정확한 복제본을 만드는 프로세스로, 소프트웨어 개발의 일관성과 안정성을 유지하기 위해 자주 활용됩니다.
git clone [email protected]:<username>/<repository>.git
업데이트된 버전의 파일 또는 문서를 업로드하여 디지털 저장소(일반적으로 웹 기반 플랫폼에서 호스팅되는 저장소)의 콘텐츠를 수정하는 작업.
git push origin <branch>
소스 코드 저장 시설에서 업데이트 철회.
git pull origin <branch>
비밀번호 인증에 비해 SSH의 장점
SSH는 비밀번호에 의존하는 기존 기술에 비해 더 안전하고 효율적인 인증 수단을 제공합니다.
SSH 인증을 사용하면 비밀번호 입력이 필요하지 않으므로 불법적인 정보 획득으로 인한 기밀 정보 유출 가능성을 최소화할 수 있습니다.
암호화 키를 사용하면 단순한 텍스트 암호에만 의존할 때보다 무차별 암호 대입 공격에 대한 시스템의 저항력이 높아집니다.
개인 키가 위험에 처한 경우 철회하고 새 키를 발급받을 수 있어 이전에 손상된 키는 더 이상 유효하지 않습니다.
SSH 인증은 보안 특성과 취약하거나 도난당한 자격 증명과 관련된 위험을 완화할 수 있는 기능으로 인해 일반적으로 비밀번호 인증보다 더 유리한 것으로 간주됩니다.
모범 사례 및 문제 해결
SSH를 원활하고 안전하게 설치하려면 정해진 지침을 준수하고 발생할 수 있는 일반적인 문제와 이를 해결하는 방법을 숙지하는 것이 필수적입니다.
보안 경계를 강화하기 위한 수단으로 기본 비밀번호 외에 추가적인 보호 수준을 제공하기 위해 암호를 사용할 것을 적극 권장합니다.
정기적인 키 교체를 실천하고 적절한 백업 조치를 취하는 것은 중요한 정보를 보호하는 데 있어 매우 중요한 부분입니다.
모든 단계를 확인하고 올바르게 수행하여 SSH 에이전트 구성에 권한 문제나 부정확성이 발생하지 않도록 합니다.
이 가이드라인을 준수하면 주저 없이 GitHub에서 SSH 인증을 사용할 수 있습니다.
SSH의 다양성
보안 셸(SSH) 프로토콜은 서버, 마이크로컨트롤러, 네트워크 장치의 원격 관리가 필요한 다양한 애플리케이션에서 널리 활용되는 도구입니다. SSH는 명령줄 인터페이스(CLI)에 대한 안전한 진입을 제공하여 사용자가 안전한 암호화된 연결을 통해 다양한 작업을 실행하고, 구성을 조정하고, 데이터를 전송하고, 문제를 해결할 수 있도록 합니다.