본문 바로가기
컴퓨터/Windows

Windows에서 OpenSSH를 이용하여 SSH 키 쌍 생성하기

by Spring13 2024. 7. 1.

Oracle Cloud 인스턴스를 생성하는 과정에서 SSH 접속을 설정하는 과정에서 SSH 키 쌍을 생성하는 과정이 있다.

 

Oracle Cloud #2 - 인스턴스 만들기

저번 글에서 Oracle Cloud를 사용하기 위해 회원가입을 하는 방법을 설명한 바 있다. ORACLE Cloud #1 - 가입하기 전에 필자는 MS Azure for Students에 가입하는 법에 대해 글을 쓴 바 있다. Azure for Students #1 -

sprout13.tistory.com

그러나 이러한 SSH 키는 SSH가 설치되어 있는 경우, 로컬 컴퓨터에서도 생성할 수 있다.

이 글에서는 Windows에서 OpenSSH를 이용하여 SSH 키 쌍을 생성하는 방법을 알아본다.


아래의 명령을 입력한다.

ssh-keygen -t rsa

이 명령은 RSA 알고리즘에 기반하여 공개 키 및 개인 키 쌍을 생성한다. 기본 값은 RSA-3072이다.

 

키 길이를 개인 설정하려면 -b 옵션을 준다.

ssh-keygen -t rsa -b "원하는 비트 값"

 

예를 들어 8192비트 길이의 키를 생성하고 싶다면 아래와 같이 입력한다.

ssh-keygen -t rsa -b 8192

비트 길이는 최소 1024비트, 최대 16384비트이다.


해당 명령을 실행하면 아래와 같이 파일을 어디에 저장할 것이냐고 물어본다.

해당 칸을 빈칸으로 남겨두면 "%homepath%\.ssh"에 "id_rsa"와 "id_rsa.pub"라는 이름으로 키 쌍을 저장한다.

"%homepath%\.ssh"

 

이후로도 몇 가지를 더 물어보는데, 모두 빈칸으로 남겨두어도 무방하다.

 

최종적으로 키가 생성되면 아래와 같이 출력된다.

RSA-3072를 사용한다고 알려준다.

 

생성된 키는 상술하였듯 "%homepath%\.ssh"에 저장된다.

파일 이름은 나중에 얼마든지 변경할 수 있다.

이때, "id_rsa"는 개인 키(private key)이고, "id_rsa.pub"는 공개 키(public key)이다.


각각의 키는 메모장을 통해 그 내용을 볼 수 있다.

 


개인 키는 이 글에서와 같이 사용자 로그인과 같은 중요한 작업에 사용되는 키이다.

 

Oracle Cloud #3 - SSH를 이용하여 인스턴스에 접속하기

저번 글에서 클라우드 인스턴스를 생성하는 방법에 대해 알아본 바 있다. Oracle Cloud #2 - 인스턴스 만들기 저번 글에서 Oracle Cloud를 사용하기 위해 회원가입을 하는 방법을 설명한 바 있다. ORACLE Cl

sprout13.tistory.com

개인 키는 사용자를 고유하게 식별하는 데에 사용되며, 공개 키와 짝을 이루어 인증에 사용된다. 사용자가 원격 서버에 연결할 때, 로컬 시스템은 개인 키를 사용하여 메시지를 서명하고, 원격 시스템에서는 해당 개인 키와 짝을 이루는 공개 키를 사용하여 서명을 확인해 사용자를 인증한다. 이 때문에 개인 키가 외부에 노출된다면 이를 통해 악의적인 공격자가 사용자의 계정에 접근할 수 있다. 따라서 개인 키는 타인과 공유되어서는 안 되며, 개인 키가 외부에 노출된 경우, 이를 신속하게 교체해야 한다.

 

공개 키는 그 이름 그대로 외부에 공개되는 키이다.

공개 키는 다른 시스템에서 사용자를 인증하는 데 사용되며, 사용자가 원격 서버에 접속하는 경우, 해당 서버에 등록된 공개 키를 이용하여 로컬 컴퓨터가 개인 키로 암호화한 후 보내는 메시지를 해독하여 사용자를 인증한다.


여담


키는 얼마든지 만들 수 있으므로, 마음껏 만들어보자

 

이 글에서, SSH-Keygen을 이용해 로컬 컴퓨터에서 생성한 키는 기본값으로 RSA-3072를 사용하는데, 이는 널리 사용되는 RSA-2048보다 더 보안 수준이 높다. RSA 키의 길이가 증가함에 따라 암호화의 안전성이 향상되기 때문이다.

 

위 문단을 보고 '그렇다면 RSA 키의 길이가 증가하면 좋구나'라고 생각하는 사람이 있을 텐데, 반만 맞고 반은 틀리다.

키의 길이가 길어질수록 보안 수준은 높아지지만, 이를 이용해 암호화-복호화하는 과정에서 더 많은 리소스를 요구한다.

이 때문에 현재는 RSA -2048이 가장 널리 쓰이며, 조금 더 높은 보안 수준을 원한다면 상술한 RSA-3072나 RSA-4096, RSA-8192을 이용한다.


참고 자료 및 관련 글


더보기

https://namu.wiki/w/%EA%B3%B5%EA%B0%9C%ED%82%A4%20%EC%95%94%ED%98%B8%ED%99%94%20%EB%B0%A9%EC%8B%9D

 

공개키 암호화 방식

암호화 와 복호화 에 같은 키를 사용하는 비밀키 암호화 기법 과 달리, 암호화와 복호화에 사용하는 키 원칙적으

namu.wiki

 

https://namu.wiki/w/RSA%20%EC%95%94%ED%98%B8%ED%99%94

 

RSA 암호화

RSA key cryptosystem 현재 SSL/TLS 에 가장 많이 사용되는 공개키 암호화 알고리즘 이다.

namu.wiki

 

https://ko.wikipedia.org/wiki/Ssh-keygen

 

ssh-keygen - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전.

ko.wikipedia.org

 

https://en.wikipedia.org/wiki/Ssh-keygen

 

ssh-keygen - Wikipedia

From Wikipedia, the free encyclopedia Protocol suite found on Unix, Unix-like and Microsoft Windows computer systems used ssh-keygen is a standard component of the Secure Shell (SSH) protocol suite found on Unix, Unix-like and Microsoft Windows computer sy

en.wikipedia.org

 

https://en.wikipedia.org/wiki/Secure_Shell

 

Secure Shell - Wikipedia

From Wikipedia, the free encyclopedia Cryptographic network protocol The Secure Shell Protocol (SSH) is a cryptographic network protocol for operating network services securely over an unsecured network.[1] Its most notable applications are remote login an

en.wikipedia.org

 

https://ko.wikipedia.org/wiki/RSA_%EC%95%94%ED%98%B8

 

RSA 암호 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. RSA[1] 암호는 공개키 암호시스템의 하나로, 암호화뿐만 아니라 전자서명이 가능한 최초의 알고리즘으로 알려져 있다. RSA가 갖는 전자서명 기능은 인증을 요구

ko.wikipedia.org

 

https://sprout13.tistory.com/67

 

Oracle Cloud #3 - SSH를 이용하여 인스턴스에 접속하기

저번 글에서 클라우드 인스턴스를 생성하는 방법에 대해 알아본 바 있다. Oracle Cloud #2 - 인스턴스 만들기 저번 글에서 Oracle Cloud를 사용하기 위해 회원가입을 하는 방법을 설명한 바 있다. ORACLE Cl

sprout13.tistory.com

 

728x90
반응형

댓글