Oracle Cloud 인스턴스를 생성하는 과정에서 SSH 접속을 설정하는 과정에서 SSH 키 쌍을 생성하는 과정이 있다.
그러나 이러한 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"
이후로도 몇 가지를 더 물어보는데, 모두 빈칸으로 남겨두어도 무방하다.
최종적으로 키가 생성되면 아래와 같이 출력된다.
생성된 키는 상술하였듯 "%homepath%\.ssh"에 저장된다.
이때, "id_rsa"는 개인 키(private key)이고, "id_rsa.pub"는 공개 키(public key)이다.
각각의 키는 메모장을 통해 그 내용을 볼 수 있다.
개인 키는 이 글에서와 같이 사용자 로그인과 같은 중요한 작업에 사용되는 키이다.
개인 키는 사용자를 고유하게 식별하는 데에 사용되며, 공개 키와 짝을 이루어 인증에 사용된다. 사용자가 원격 서버에 연결할 때, 로컬 시스템은 개인 키를 사용하여 메시지를 서명하고, 원격 시스템에서는 해당 개인 키와 짝을 이루는 공개 키를 사용하여 서명을 확인해 사용자를 인증한다. 이 때문에 개인 키가 외부에 노출된다면 이를 통해 악의적인 공격자가 사용자의 계정에 접근할 수 있다. 따라서 개인 키는 타인과 공유되어서는 안 되며, 개인 키가 외부에 노출된 경우, 이를 신속하게 교체해야 한다.
공개 키는 그 이름 그대로 외부에 공개되는 키이다.
공개 키는 다른 시스템에서 사용자를 인증하는 데 사용되며, 사용자가 원격 서버에 접속하는 경우, 해당 서버에 등록된 공개 키를 이용하여 로컬 컴퓨터가 개인 키로 암호화한 후 보내는 메시지를 해독하여 사용자를 인증한다.
여담
키는 얼마든지 만들 수 있으므로, 마음껏 만들어보자
이 글에서, 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
https://namu.wiki/w/RSA%20%EC%95%94%ED%98%B8%ED%99%94
https://ko.wikipedia.org/wiki/Ssh-keygen
https://en.wikipedia.org/wiki/Ssh-keygen
https://en.wikipedia.org/wiki/Secure_Shell
https://ko.wikipedia.org/wiki/RSA_%EC%95%94%ED%98%B8
https://sprout13.tistory.com/67
'컴퓨터 > Windows' 카테고리의 다른 글
expand-vdisk를 이용하여 가상 디스크 파일의 최대 용량 늘리기 (0) | 2024.09.01 |
---|---|
Winget에서 특정 버전의 패키지를 설치하기 (0) | 2024.08.01 |
DISKPART를 이용한 가상 하드 디스크 연결 및 연결 해제 (0) | 2024.05.01 |
"앱 및 기타 보낸 사람이 전송한 알림"의 목록 초기화하기 (0) | 2024.05.01 |
Windows "이 PC에 화면 표시"를 이용하여 Android의 화면 보기 (0) | 2024.04.01 |
댓글