본문 바로가기
DEV/연구목록

[Git] SSH 키 생성하는 방법 & SSH 키 찾는 방법

by Rising One★ 2023. 11. 15.
728x90
반응형
SMALL

Git 대표이미지

 

접근 (요약)

형상관리 툴 Github 원격저장소에서 특정 프로젝트를 Pull 받아야하는 일은 빈번합니다.

Pull을 받는 방법으로는 크게 'HTTPS' 방식과 'SSH(key)' 방식으로 구분할 수 있습니다.

기존에 'HTTPS' 방식으로 큰 인증 과정없이 쉽게 하던 과정을, Github에서는 지양하라고 권고했고,

보안에 더욱 유리하고 강력한 'SSH(key)' 방식을 추천하고 사용하길 권장했습니다.

따라서, 이 방법을 접근해보고자 합니다.

 

  1. Git > 로그인 > 우상단 Profile > settings > "SSH and GPG keys"

 

  2. SSH 키 조회 (생성했었나? 로컬에 있나?)

      (2.1). (로컬) SSH 키 조회 (어디엔가 존재할 것이라는 과거 기억..)

 

  3. SSH 키 생성

      (3.1). SSH 키 생성 (Create)

      (3.2). SSH 키 복사 (Copy)

      (3.3). SSH 키 삭제 (Delete)

 

  4. SSH 키 재발급의 필요성 

      (4.1) 보안 측면

      (4.2) 액세스 관리

      (4.3) 키의 유효성 확인

      (4.4) 최신 보안 기술 적용

      (4.5) 컴퓨터나 장치 손실에 대한 대비

 

  5. SSH 키 재발급 이후 known_hosts 업데이트

      (5.1).


방법

  1. Git > 로그인 > 우상단 Profile > settings > SSH and GPG key


  2. SSH 키 조회 (생성했었나? 로컬에 있나?) => git bash 이용

      (2.1). (로컬) SSH 키 조회 (어디엔가 존재할 것이라는 과거 기억..)

ls ~/.ssh

위 명령어를 통해 'id_rsa' , 'id_rsa.pub' 라는 파일, 즉 기존의 SSH 키 파일을 확인할 수 있습니다.

 


 

  3.  SSH 키 생성

      (3.1). SSH 키 생성 (Create)

      - SSH 키 발급의 여부를 알지 못한 채 무작정 생성하려던 찰나에 이미 생성됐었던 이력이 조회됐습니다.

        (삭제 후 생성을 할테지만) 먼저 생성만을 위한 명령어를 알아보자면, 아래와 같습니다.

 

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
## "자신의 깃 계정(메일)"

위 코드를 사용해 SSH(key)파일을 생성하고 나면 [2] 번에서 진행했던 명령어를 통해 조회했듯, 조회가 됩니다.

 

+ 명령어 이후 등장하는 Enter passphrase 는  SSH 키에 대한 암호(또는 비밀번호)를 설정하는 부분입니다.

 

      (3.2). SSH 키 복사 (Copy) - 공개키

cat ~/.ssh/id_rsa.pub

공개키를 복사하기 위해선, 위의 명령어를 사용합니다. 추후 붙여넣을 필요성이 있으니 기억해둡시다.

 

      (3.3). SSH 키 삭제 (Delete)

      - 삭제를 위해서는 각 파일에 대해 rm 명령어를 진행해주셔야 합니다. 

rm ~/.ssh/id_rsa
rm ~/.ssh/id_rsa.pub

 

  4. SSH 키 재발급의 필요성

SSH 키는 보안 상의 이유로 일정 기간마다 변경하는 것이 권장됩니다. 기존의 키를 계속 사용하는 것보다 주기적으로 새로운 키를 발급받아 사용하는 것이 보안을 강화할 수 있습니다. 이에 대한 몇 가지 이유와 장점을 살펴보겠습니다.

(4.1) 보안 측면
SSH 키를 주기적으로 바꾸면, 기존에 유출된 키에 대한 보안 문제를 최소화할 수 있습니다. 예를 들어, 키가 유출되었다고 감지되면 해당 키를 비활성화하고 새로운 키로 교체할 수 있습니다.

 

(4.2) 액세스 관리
팀에서 멤버의 액세스가 변경되거나 팀에서 떠난 경우, 해당 사용자의 키를 비활성화하고 새로운 키를 발급하여 해당 사용자의 액세스를 정확하게 관리할 수 있습니다.

 

(4.3) 키의 유효성 확인
키를 정기적으로 갱신하면 해당 키를 사용하는 시스템이 여전히 유효한지 확인할 수 있습니다. 만약 키의 유효기간이 만료되었다면, 이를 갱신하여 작동하도록 유지할 수 있습니다.

 

(4.4) 최신 보안 기술 적용
새로운 키를 생성할 때마다 최신의 보안 기술이 적용됩니다. 새로운 알고리즘이나 향상된 암호화 방법을 사용하여 키를 생성하면 보안 수준이 향상됩니다.

 

(4.5) 컴퓨터나 장치 손실에 대한 대비
개인 키가 노출되거나 손실된 경우, 해당 키로 액세스할 수 있는 모든 시스템의 보안이 위험에 처할 수 있습니다. 정기적으로 키를 변경하면 손실 또는 유출의 영향을 최소화할 수 있습니다.

 

따라서 주기적으로 새로운 SSH 키를 발급받아 사용하는 것이 보안 및 액세스 관리의 측면에서 좋은 관행입니다. 이를 통해 시스템과 데이터를 더욱 안전하게 보호할 수 있습니다.


 

  5. SSH 키 재발급 이후 known_hosts 업데이트

'id_rsa' 파일과 'id_rsa.pub' 파일을 생성하고 삭제하고, 복사하는 그러한 과정은 알겠으나, 동일 경로에 함께 존재하는 'known_hosts' 파일에 대한 파악과 관리 또한 궁금해졌습니다.

 

"known_hosts" 파일 :  SSH 클라이언트가 접속하는 서버의 호스트 키를 기록하는 파일입니다. 이 파일은 보안상의 이유로 호스트의 신원을 확인하는 데 사용됩니다.

 

 SSH 키를 변경하면, 새로운 호스트 키에 대한 정보를 known_hosts 파일에 업데이트해야 합니다.
따라서 SSH 키를 삭제하고 새로 발급받는 경우에는 기존의 known_hosts 파일도 업데이트해야 합니다. 그렇지 않으면 SSH 클라이언트에서 호스트 키가 변경되었다는 경고가 나타날 수 있습니다.

새로운 SSH 키를 생성한 후에는 다음과 같이 ssh-keyscan 명령어를 사용하여 호스트의 새로운 키를 가져올 수 있습니다:

ssh-keyscan github.com >> ~/.ssh/known_hosts

위 명령어는 GitHub의 호스트 키를 가져와서 기존의 known_hosts 파일에 추가합니다. 호스트가 GitHub이 아니라 다른 경우에는 해당 호스트에 대한 새로운 호스트 키를 가져와서 업데이트하는 방식으로 사용할 수 있습니다.

다시 강조하자면, 호스트 키를 변경하면 해당 호스트에 대한 기존의 known_hosts 파일을 업데이트해야 하며, 이를 통해 클라이언트에서 안전하게 호스트에 연결할 수 있습니다.

 

이상으로, Git pull 때에 SSH 방식으로 진행하며 겪은 과정 학습해봤습니다.

추가 질문을 댓글을 달아주시면 감사하겠습니다^^

오늘도 파이팅입니다! 

728x90
반응형
LIST

댓글