본문 바로가기
utils/git and github

[ssh-keygen] ssh 관련 private key와 public key 생성하기.

by ds31x 2023. 12. 27.

ssh (secure shell)

ssh는 secure shell의 약자로 네트워크 상에서 암호화된 통신을 위한 프로토콜 (및 이를 구현한 프로그램)을 가르킴.

 

주로 원격지의 장비에 보안이 보장된 접속을 제공하며 이를 위해 암호화 및 인증을 사용함.

 

이를 위해 ssh는

  • password 기반의 인증과
  • private and public key 기반의 인증,
  • time based 인증 등의 다양한 방법을 제공한다.

과거에는 간단한 password 기반의 인증이 가장 많이 사용되었으나,

최근에는 주로 private key와 public key를 이용한 방식이 사용됨.


ssh-keygen

ssh-keygen은 ssh에서 사용되는 private key와 public key를 생성 및 관리, 편집 하는 프로그램임.

이를 통해 ssh에서 사용할 private key와 public key를 생성할 수 있음.

  • private key :
    • 사용자의 장비에 저장되며, 이 key를 이용하여 자신을 인증함.
  • public key :
    • 대응되는 private key가 있는 public key는 사용자의 인증이 필요한 원격지의 서버에 저장됨.
    • 해당 public key를 통해 대응되는 private key를 가진 사용자인지를 확인할 수 있고, 보안을 위한 접속등에서 요구되는 암호화등에서 사용되게 됨.

사용법.

기존 ssh 키 확인하기

현재 장비에서 ssh 를 위한 key가 있는 지를 다음을 통해 확인 가능함.

ls -al ~/.ssh
# dir %userprofile%\.ssh #for windows
  • 자신의 home directory를 의미하는 ~ 밑에 .ssh 라는 이름의 directory에 일반적으로 ssh 를 위한 key파일들이 위치함.

이미 private key 와 public key를 가진 경우 다음의 이름들의 파일을 확인할 수 있음.

id_rsa.pub
id_ecdsa.pub
id_ed25519.pub
  • extension이 .pub 가 있으면 public key파일이며, 같은 이름이면서 extension이 없으면 private key임.
  • 위의 이름들의 차이는 키를 생성한 암호 알고리즘에 따라 차이가 난다.
  • 가장 안전한 최신의 알고리즘으로 ed25519를 사용하는 것을 권하는 경우가 많으며, 아직까지 rsa도 많이 사용된다.

ssh 키 생성하기

ssh 키가 없다면, ssh-keygen을 통해 생성한다.

ssh-keygen -t rsa -C "사용할email주소"
  • -t : 키를 생성할 때 사용할 암호 알고리즘을 지정함. 여기선 rsa를 사용했지만 최근엔 많은 경우 ed25519를 추천한다.
  • -C : 해당 키의 소유자의 이메일 주소. @ 이 포함된 유효한 이메일 경로명을 넣어주면 된다.

이후 키가 놓일 path를 물어보는데 그냥 enter를 입력하면 기본 경로인 ~/.ssh를 사용하게 된다.

키에 대한 암호(passphrase)를 물어보는데 여기서도 enter를 입력하면 키에 대한 암호가 설정되지 않는다(가급적 암호를 입력하자.)
해당 암호에 대한 질문은 확인을 위해 한번 더 물어본다.


같이 읽어보면 좋은 자료들

보다 자세한 내용은 다음 url을 확인하라.
https://docs.github.com/ko/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent

 

새 SSH 키 생성 및 ssh-agent에 추가 - GitHub Docs

SSH(보안 셸 프로토콜)를 사용하여 GitHub.com의 리포지토리에서 데이터를 액세스하고 쓸 수 있습니다. SSH를 통해 연결할 때 로컬 머신에서 프라이빗 키 파일을 사용하여 인증합니다. 자세한 내용은

docs.github.com

windows 관련 자료

https://learn.microsoft.com/ko-kr/windows-server/administration/openssh/openssh_keymanagement

 

Windows용 OpenSSH의 키 기반 인증

기본 제공 Windows 도구 또는 PowerShell을 사용하여 Windows용 OpenSSH 서버 키 기반 인증, 생성 및 배포에 대해 알아봅니다.

learn.microsoft.com