SSH 키의 종류와 사용법 pem 키 ppk키 개인키 공개키

인터넷을 통해 웹사이트를 사용자들에게 제공하려면, 사이트를 설치하고 배포할 별도의 서버가 필요합니다. 이 서버에 접속하기 위해서는 보통 사용자 계정과 암호를 이용하는데, 이 때 필요한 것이 바로 SSH 키입니다. SSH 키는 사용자 인증을 위해 사용되는 도구 중 하나로, 고유한 키를 통해 안전하게 서버에 접속할 수 있게 해줍니다. 이는 일반적인 암호 방식보다 더욱 강력한 보안 수단을 제공하며, SSH 키를 사용함으로써 서버의 보안을 효과적으로 강화할 수 있습니다.

SSH 키를 사용하면, 암호를 지속적으로 입력할 필요 없이 서버에 접속할 수 있습니다. 이는 일반적인 암호보다 보안이 향상되는 이점을 제공하며, 작업 효율성 또한 크게 향상시킵니다. 따라서 서버를 운영하는 데 있어 SSH 키의 사용은 필수적인 요소라고 할 수 있습니다.

이 글에서는 SSH 키의 여러 형식과 그것이 어떻게 사용되는지에 대해 알아보겠습니다. 먼저, 개인키와 공개키의 개념을 이해하고, 이것이 데이터의 보안에 어떤 역할을 하는지 정리하고, 그 다음, PEM과 PPK라는 두 가지 주요 SSH 키 형식을 살펴보고 그들 사이의 차이점을 파악하겠습니다. 마지막으로, 이러한 키들을 실제로 어떻게 사용하고 관리하는지에 대해 서도 정리합니다. 이를 통해, 서버 접속에 필요한 보안 환경을 설정하고 관리하는 능력을 키울 수 있을 것입니다.

아래 설명은 iboxcomein.com 에서 테스트 및 검증 후 작성 된 내용이지만 이것이 본문의 내용의 정확성이나 신뢰성에 대해 보증을 하는 것은 아니니 단순 하게 참고용으로 확인바랍니다.

튜토리얼 환경: Ubuntu 22.04, PuTTY

SSH 키란 무엇인가

SSH 키는 데이터를 안전하게 보호하며, 네트워크를 통해 서버에 액세스하는 중요한 방법입니다. SSH키는 기본적으로 서버에서 저장되는 공개키와 사용자(개인)이 보관하는 개인키, 이렇게 두 부분으로 구성됩니다. 이 두 키는 암호화와 복호화에 사용되며, 함께 작동하여 통신의 보안을 담당합니다.

아이폰 아이패드 맥 전화 메시지 연동 해제하는 방법

공개 키 암호화란

공개 키 암호화는 데이터를 안전하게 전송하기 위한 방법 중 하나로, 두 개의 키(공개키와 개인키)를 사용합니다. 데이터를 암호화하는 데 사용되는 키는 공개 키이며, 암호화된 데이터를 복호화하는 데 사용되는 키는 개인 키입니다. 공개 키를 사용하여 암호화된 데이터는 해당 개인 키를 가진 사람만 복호화 할 수 있습니다.

개인키와 공개키의 차이점

그러면 개인키와 공개키는 어떠한 차이가 있는지도 간단하게 알아보도록 하겠습니다.

  • 개인키: 개인키는 서버에 접속하는 사용자만이 가지고 있는 비밀키입니다. 이 키를 통해 암호화된 데이터를 복호화하거나, 데이터에 서명하여 데이터의 무결성을 확인하는 데 사용됩니다. 이 키는 절대로 외부에 노출되어서는 안 되는 중요한 정보입니다.
  • 공개키: 공개키는 서버에 저장되며, 모든 사용자가 접근 가능한 키입니다. 이 키는 데이터를 암호화하거나, 개인 키에 의해 서명된 데이터의 무결성을 확인하는데 사용됩니다. 공개 키는 이름에서 알 수 있듯이 공개적으로 공유될 수 있습니다.
macOS 맥에서 카카오톡 앱 두 개 사용하는 방법

PEM과 PPK에 대하여

PEM과 PPK는 둘 다 공개 키 암호화에 사용되는 키 형식입니다. 이들은 서로 다른 툴이나 시스템에서 사용됩니다.

참고: 선택하는 키 형식은 주로 사용하는 SSH 클라이언트나 시스템에 따라 결정됩니다. PEM은 OpenSSH와 같은 리눅스 기반 시스템에서 널리 사용되며, PPK는 Windows 환경의 PuTTY에서 주로 사용됩니다.

PEM 키 형식 이해하기

PEMPrivacy Enhanced Mail은 원래 암호화된 메일을 보낼 때 사용하기 위해 개발된 형식입니다. 그러나 현재로서는 키, 인증서 및 기타 암호화 정보를 저장하는 데 널리 사용되는 형식이 되었습니다. 이 PEM 파일은 일반적으로 .pem, .crt, .cer 또는 .key 확장자를 가집니다.

PEM 키는 주로 SSH(보안 쉘) 같은 암호화 프로토콜에서 사용됩니다. 이는 클라이언트와 서버 사이의 통신을 암호화하여, 민감한 데이터를 안전하게 전송할 수 있게 해줍니다.

PEM 키 형식의 특징

PEM 키 형식은 보안 및 키 관리 분야에서 널리 사용되며, 다른 키 형식과의 변환도 쉽게 할 수 있어서 매우 유용한 형식 중 하나입니다. PEM 키 형식의 특징은 다음과 같습니다.

  • PEM은 공개 키 및 개인 키와 같은 암호화 키를 저장하는 데 널리 사용되는 형식 중 하나입니다. 이 형식은 다양한 보안 프로토콜 및 애플리케이션에서 키 교환 및 인증을 위해 활용됩니다.
  • OpenSSH와 같은 대부분의 SSH 클라이언트에서 기본적으로 사용됩니다. 따라서 SSH 키 관리와 원격 접속에 사용되는 경우 많이 쓰입니다.
  • 기본적으로 베이스64 인코딩된 텍스트 형식을 사용하여 데이터를 인코딩합니다. PEM 형식은 주로 텍스트로 표현되며, 데이터는 베이스64 인코딩을 사용하여 ASCII 문자로 변환됩니다. 이로써 키 및 인증서를 텍스트로 표시하고 공유하기 용이합니다.
  • PEM 형식의 데이터는 사람이 읽기 쉬우며, 다른 시스템 및 프로그램 간에도 쉽게 교환 가능합니다. 이러한 가독성은 디버깅 및 키 관리에 도움을 줍니다.
  • PEM 형식의 데이터는 다른 키 포맷으로 변환할 수 있습니다. 예를 들어, OpenSSL을 사용하여 PEM 형식의 키를 DER 형식 또는 PFX 형식으로 변환할 수 있습니다.

PEM 파일 구조.

PEM 파일 구조는 다음과 같습니다.

--BEGIN TYPE---
BASE64 ENCODED DATA
--END TYPE---

여기서 TYPE은 저장된 데이터의 유형을 나타냅니다. 예를 들어, ---BEGIN RSA PRIVATE KEY------END RSA PRIVATE KEY--- 사이에 베이스64로 인코딩된 RSA 개인 키 데이터가 있습니다.

이 PEM 형식은 인증서Certificate, 개인 키Private Key, 공개 키Public Key, 루트 인증서Root Certificate, 인증서 체인Certificate Chain 등을 저장하는 데 사용될 수 있습니다. 이는 SSH 키, SSL 인증서 등 암호화된 네트워크 통신에서 광범위하게 사용됩니다.

오라클 클라우드 무료 티어 가입 절차 와 오류 및 주의 사항 정리

PPK 키 형식 이해하기

PPKPuTTY Private Key는 PuTTY라는 유명한 SSH 및 텔넷 클라이언트에서 사용하는 키 형식입니다. PuTTY는 자체 키 형식을 사용하므로, PEM 형식의 키를 PPK 형식으로 변환해야 PuTTY를 통해 서버에 접속할 수 있습니다. Putty 사용법 더 알아보기

PEM과 PPK의 차이점

PEM과 PPK의 주요 차이점은 다음과 같습니다.

  • PEM 키 형식은 RSA 및 DSA 암호화 알고리즘을 적용한 키 저장에 사용되는 표준 형식이지만, PPK는 PuTTY 프로그램의 개인키 저장을 위해 사용되는 형식입니다.
  • PEM 키 형식은 주로 LinuxUNIX 계열 운영 체제에서 사용되는 반면, PPK 키 형식은 주로 Windows 운영 체제의 PuTTY에서 사용됩니다.
  • PEM 키 형식은 텍스트 마커와 Base64 인코딩을 사용하여 공개키 및 개인키를 표현하는 반면, PPK는 PuTTYgen 도구를 사용하여 생성되며 공개 키 및 개인 키로 구성되어 있습니다.
아이피타임 공유기 VPN 서버 설정하기 WireGuard

SSH 키의 사용 방법

개인키와 공개키를 생성하고 이렇게 생성된 공개키를 서버에 등록하고 접속하는 기본적인 방법을 정리합니다.

참고: 내용이 장황할 수 있지만 기본적으로 개인키는 본인이 보관하고 공개키는 접속할 서버에 업로드합니다. 그리고 개인키와 공개키가 서로 매칭되면 접속이 가능한 것입니다.

개인키와 공개키 생성하기

AWS, Google 클라우드 와 같은 서비스를 통해 서버를 생성하면 간편하게 SSH키 쌍을 생성하고 등록할 수 있습니다. 하지만 기본적으로 SSH 키는 직접 생성할 수 있습니다. 키 생성하는 방법은 사용하는 운영 체제나 도구에 따라 다르지만, Linux, macOS 또는 Git Bash와 같은 Unix 기반의 환경에서는 다음과 같은 명령어를 사용하여 생성할 수 있습니다.

리눅스 또는 macOS에서 생성하는 방법

ssh-keygen -t rsa

터미널Terminal을 실행한 다음, 위 명령을 입력하고 실행하면 다음과 같이 암호 생성 과정이 진행되고 결과가 출력됩니다. 만약 키 쌍의 이름을 변경하고 싶은 경우 ssh-keygen -t rsa -f /원하는/경로/및/파일이름와 같이 명령합니다.

root@cd2f6e105529:/# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:E+xTEzgfik2HgOzRSlp0pxwFXZmrEvBMqMnO/XAFSOI root@cd2f6e105529
The key's randomart image is:
+---[RSA 3072]----+
|  .+o===o+oo     |
| . .Xo+=* =.     |
| .EB Bo=o=oo     |
|  = o =.+oo.     |
| o .   oS.       |
|  o o o .o       |
|     + .         |
|      .          |
|                 |
+----[SHA256]---+
root@cd2f6e105529:/

위 작업 후 ~/.ssh 경로를 확인하면, 개인키는 id_rsa 파일에 공개키는 id_rsa.pub파일에 저장됩니다.

root@cd2f6e105529:~/.ssh# ll
total 20
drwx---- 2 root root 4096 Aug  4 07:14 ./
drwx---- 1 root root 4096 Aug  4 07:16 ../
-rw----- 1 root root 2655 Aug  4 07:08 id_rsa
-rw-r--r-- 1 root root  571 Aug  4 07:08 id_rsa.pub
root@cd2f6e105529:~/.ssh# 

~/.ssh/id_rsa 파일을 열어보면 다음과 같은 값을 볼 수 있습니다. 앞서 안내한 형식으로 파일이 저장되는 것을 확인할 수 있습니다.

--BEGIN OPENSSH PRIVATE KEY---
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
TJvaiHB64LG5AWXrEQqnCRIns8s=
--END OPENSSH PRIVATE KEY---

그리고 ~/.ssh/id_rsa.pub 파일을 열어보면 다음과 같은 값을 볼 수 있습니다.

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCu4PaHnNS7QD7zWb8tKKhK6sZNznz9iGwkMseBfgSHHobZb27Q7dM8tTfsZOSUj+i9lK7AUEevZAKKeRWUAPZ7DA2pyIskr6Wan60aBkzdIn7c1vGJffGwCtBSU9T1v+a9uEwdze01gXdNWHp0ajuEg7UHJ622Crgo5kzj/wBzUBD74lbyyRKsIaA1mL8AjaKq8v2ddwpQM0j8JUyyoNFYwBPs1gBoABq7TWU833amISHzLh6FnEDtsAe5wtsZc7fQ9cXcHX3QZWflJukb2DJgqFZL1yXAr+T56E52CJ6AQRK/KjFnYWLd6qeiNpaPi15t18jyz+M9+R8psFCsWa5y3hF5skDaXilFLxR5l1soOfZ93ZvbQlfVbqbtzJ+PnsQ/KAeyaexOtINq1mN0TZfB3RGwvuDtd+s7SwsK8ONXG/uequuvSsX/P8dB7I2Cr+o5bSBfB9jhh2heM+6rYgKlxrSVGYeBCxilOC4BQWTr/klYEJVDGn07ldwK5YxtPmU= root@cd2f6e105529

앞서 짧게 언급했지만, 조금 응용해 보면 다음과 같이 키의 이름, 저장 위치, 비밀번호 등을 원하는 값으로 지정 및 설정할 수 있습니다.

ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -f /원하는/경로/및/파일이름

이 명령어는 4096비트 RSA 키를 생성하라는 의미이고, 생성 과정에서 몇 가지 질문이 나올 수 있으며, 이러한 옵션은 SSH 키 생성 시 추가적인 설정을 할 때 사용되며, 모든 옵션은 선택 사항이며 기본 설정값을 사용할 수도 있습니다. 사용자의 요구사항과 보안 필요에 따라 옵션을 조정할 수 있습니다.

  • -b 4096: 비트 수를 나타내며, 4096비트로 키를 생성하라는 옵션입니다. 더 긴 키 비트 수는 더 강력한 보안을 제공하지만 생성 및 사용 시 더 많은 컴퓨팅 리소스를 요구할 수 있습니다. 일반적으로 2048비트 또는 4096비트를 사용합니다.
  • -f /원하는/경로/및/파일이름: -f 옵션을 사용하여 파일 이름을 변경하고, 생성되는 키 파일은 /원하는/경로/및/파일이름에 저장됩니다. 이 부분은 선택 사항입니다.
  • -C "your_email@example.com": -C옵션은 주석(comment) 필드로, 생성된 키에 사용자의 이메일 주소를 포함하라는 옵션입니다. 이 부분은 선택 사항이며, 키에 관련된 추가 정보를 제공할 때 사용됩니다.

Windows에서 생성하는 방법

Windows에서 키 쌍을 생성하려면 PuTTYgen을 사용합니다. PuTTYgen을 다운로드 받고 실행한 다음, Generate 버튼을 클릭해서 공개 및 개인키를 생성합니다. 그 다음 Save public key와 Save private key를 클릭하여 각각의 키를 저장합니다.

PuTTY 비밀번호 입력없이 자동으로 접속하는 방법

공개키 등록하는 방법

SSH 공개키를 등록하는 방법은 사용자 계정 및 서버에 따라 다릅니다. 하지만 일반적인 방법으로는 공개키를 원격 서버의 사용자 계정에 등록하는 것입니다. 이를 위해서는 다음과 같은 단계를 따릅니다.

mkdir -p ~/.ssh
  1. 원격 서버에 SSH를 사용하여 접속합니다. 접속한 후에는 사용자의 홈 디렉토리에 .ssh라는 이름의 디렉토리를 생성합니다. 대부분의 리눅스 기반 시스템에서는 사용자가 처음 SSH를 사용하게 되면 ~/.ssh 디렉토리가 자동으로 생성되니 만약 이미 디렉토리가 존재한다면 이 단계는 건너뛰어도 됩니다.
echo your_public_key >> ~/.ssh/authorized_keys
  1. 생성된 .ssh 디렉토리 내부에 authorized_keys라는 파일을 생성하고, 이 파일에 공개키를 추가합니다. 이때 your_public_key는 본인의 실제 공개키로 교체해야 합니다.
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
  1. .ssh 디렉토리와 authorized_keys 파일의 권한을 업데이트합니다. .ssh 디렉토리는 본인만 접근할 수 있도록, authorized_keys 파일은 본인만 읽고 쓸 수 있도록 설정해야 합니다.

이제 원격 서버에 자신의 공개키가 등록되었습니다. 이제부터는 개인키를 가진 클라이언트만이 해당 사용자 계정으로 서버에 접속할 수 있게 됩니다.

참고: 위의 방법은 일반적인 Linux 서버에서의 공개키 등록 방법입니다. 다른 서비스나 환경에서는 웹 기반 인터페이스를 제공하는 경우도 있으니, 각 서비스의 문서를 참고하시는 것이 좋습니다.

키 사용해서 접속하기

전술한대로 클라우드 서비스에서 인스턴스를 최초 생성할 때 공개키가 주입되어 있습니다. 인스턴스를 생성하는 과정에서 새 키 쌍을 생성하거나, 기존에 발급받은 키를 가져와 그대로 사용할 수도 있습니다. 이후 인스턴스에 연결하려면 개인키를 사용하여 SSH를 설정해야 합니다. 여기서는 서버에 접속하는 방법을 아주 간단하게 안내합니다.

리눅스 및 macOS에서 연결하는 방법

터미널에서 다음 명령을 입력하십시오. your_private_key는 개인키 파일의 경로, username은 서버 사용자 계정(user, ubuntu 혹은 ec2-user 등) 이름, server_ip는 원격 서버의 IP 주소로 대체해야 합니다. 콘솔과 터미널 알아보기

ssh -i your_private_key username@server_ip

Windows에서 연결하는 방법

Windows에서도 터미널 지원이 좋아지면서 Bash 쉘을 사용할 수 있는 기능이 추가되었습니다. 이를 통해 Linux에서와 거의 동일한 방식으로 SSH 키를 생성하고, 공개키를 서버에 등록할 수 있게 되었습니다. 터미널 외에도 PuTTY를 이용해서 Connection > SSH > Auth 메뉴로 이동한 다음, Private key file for authentication에 개인키 PPK 파일을 지정합니다(PEM 키는 위에서 설명한대로 PPK로 변환해야 함). 그러고나서 Session 메뉴에서 호스트 이름 및 포트 번호를 입력하고 Open을 클릭하여 연결합니다.

이를 통해 SSH 키를 사용하여 원격 서버에 안전하게 접속할 수 있습니다. 사용자 계정이 여러 개인 경우, 각 사용자에 대해 독립적인 공개키를 등록하여 접근 권한을 관리할 수 있습니다.

윈도우 11에서 WinRAR 다운로드 설치 및 기본 사용 방법

SSH 에이전트 사용

SSH 에이전트는 로컬 컴퓨터에서 개인 키를 안전하게 관리하고, 원격 서버에 로그인할 때 해당 개인 키를 사용하여 접속하는 기능을 수행합니다. SSH 에이전트 전달Agent Forwarding을 활성화하고 싶다면 SSH의 -A 옵션을 사용합니다.

SSH 에이전트

SSH 에이전트를 사용하여 원격 서버에 로그인하려면 다음과 같이 -A 옵션을 사용합니다.

ssh -A -i your_private_key username@server_ip

이때, -i 옵션을 통해 개인 키 파일을 지정하고, -A 옵션을 사용하여 에이전트 포워딩을 활성화합니다.

  • 에이전트 포워딩을 사용하면 원격 서버에 로그인한 후에도 현재 로그인된 사용자의 SSH 에이전트에 저장된 개인 키를 사용할 수 있습니다. 이것은 여러 서버 간에 로그인하는 데 매우 편리하며, 중간 서버(점프 호스트)를 통해 다른 서버로 접속해야 할 때 유용합니다.
  • 단, SSH 에이전트를 사용하기 위해서는 로컬 컴퓨터에서 SSH 에이전트가 실행 중이어야 하며, SSH 에이전트에 개인 키를 추가하고 활성화해야 합니다. 에이전트가 실행 중이지 않다면 ssh-agent 명령으로 실행할 수 있습니다.
  • 안전한 원격 서버 접속을 위해 SSH 에이전트와 에이전트 포워딩을 사용하는 것은 좋은 관행 중 하나입니다.

운영체제별 에이전트 포워딩

SSH 에이전트 및 에이전트 포워딩은 Windows, macOS 및 Linux 모두에서 사용 가능합니다. 그러나 사용하는 운영체제에 따라 설정 방법이 다를 수 있습니다.

Windows
  • Windows에서는 SSH 에이전트로 Pageant라는 프로그램을 주로 사용합니다. Pageant는 PuTTY와 함께 제공되며, PuTTY의 공개 키 형식인 PPK 파일을 사용합니다.
  • 에이전트 포워딩을 활성화하려면 PuTTY에서 설정할 수 있습니다. PuTTY를 사용하여 원격 서버에 연결하면 SSH 에이전트가 활성화됩니다.
  • 다만, Windows PowerShell에서 SSH 에이전트 및 에이전트 포워딩을 기본적으로 지원하지는 않습니다.
macOS
  • macOS에서는 기본적으로 SSH 에이전트를 제공합니다. 일반적으로 개인 키 파일을 ~/.ssh/ 디렉터리에 저장하고 ssh-add 명령을 사용하여 에이전트에 키를 추가합니다.
  • 에이전트 포워딩은 macOS에서도 사용 가능하며, -A 옵션을 ssh 명령어에 추가하여 활성화할 수 있습니다.
Linux
  • 대부분의 Linux 배포판은 SSH 에이전트를 기본으로 포함하고 있습니다. 개인 키 파일을 ~/.ssh/ 디렉터리에 저장하고 ssh-add 명령을 사용하여 에이전트에 키를 추가할 수 있습니다.
  • 에이전트 포워딩은 Linux에서도 사용 가능하며, -A 옵션을 ssh 명령어에 추가하여 활성화할 수 있습니다.

SSH 키 관리

편의를 위해 계정 수준에서 SSH키를 하나만 생성해서 여러 사이트에서 사용하는 경우를 자주보게 되는데 이때 고려해야 하는 부분과 기본적인 키 관리와 보안에 대해서 짧게 추가합니다.

주의: 하나의 SSH 키를 여러 서비스에 걸쳐 사용하는 것은 편리할 수 있지만, 보안 상의 이유로 권장되지 않습니다. 키가 하나의 서비스에서 노출되면, 모든 서비스가 위험에 노출될 수 있기 때문입니다. 가능하다면, 각 서비스에 대해 별도의 키를 생성하고 관리하는 것이 좋습니다. 또한 키를 정기적으로 갱신하는 것이 중요하며, 갱신 주기는 적어도 6개월에서 1년이 권장됩니다.

SSH 키 관리는 시스템의 보안 수준을 크게 좌우합니다. 키를 안전하게 보관하고, 절대 노출되지 않도록 해야 합니다. 특히 개인키는 매우 중요한데, 이는 서버에 접속하는 데 사용되므로 누구에게도 알려져서는 안됩니다.

  • 개인키를 파일 형태로 저장할 때는 암호화하여 보관하는 것이 좋습니다. 또한 키 파일의 권한을 적절히 설정하여, 다른 사용자가 접근할 수 없도록 해야 합니다. Linux에서는 chmod 600 명령을 사용하여 키 파일의 권한을 설정할 수 있습니다.
  • 또한 키의 생명주기를 관리하는 것도 중요합니다. 예를 들어, 특정 프로젝트나 직원이 회사를 떠난 경우 해당 키를 폐기해야 합니다. 이렇게 하면 더 이상 필요하지 않은 키로 인한 보안 위협을 방지할 수 있습니다.
윈도우 11 작업 표시줄 Windows Copilot 아이콘 제거 또는 기능 끄기

마치며

이번 글에서는 SSH 키의 종류와 사용법, pem 키, ppk키 그리고 개인키, 공개키에 대해 알아보았습니다. SSH 키는 네트워크를 통한 서버 접속 시 중요한 보안 역할을 합니다. 서로 다른 서비스에 대해 각각의 키를 사용하고, 키를 정기적으로 갱신하는 것은 기본적인 키 관리 방법입니다. 또한, 개인키는 매우 중요한 정보로, 이를 안전하게 보관하고 절대 노출되지 않도록 해야 합니다.

PEM과 PPK는 두 가지 주요 SSH 키 형식으로, PEM은 널리 사용되는 표준 키 형식이며, PPK는 PuTTY SSH 클라이언트에서 사용하는 키 형식입니다. 이들은 각각의 환경과 요구에 맞게 사용되어야 합니다. 마지막으로, 개인키와 공개키는 SSH 키를 이루는 두 가지 부분으로, 이 둘은 키 생성 및 관리, 그리고 서버 접속에 있어 핵심적인 역할을 합니다. 개인키는 사용자만이 가지고 있어야 하며, 공개키는 원격 서버에 등록되어, 해당 키를 가진 사용자만이 접속할 수 있도록 합니다.

이번 글을 통해 SSH 키와 관련한 기본적인 지식을 얻었기를 바랍니다. 이를 바탕으로 보다 안전한 서버 접속 및 관리를 위한 준비가 되었기를 바라며, 더 깊이 있는 공부를 위해 추가 자료를 찾아보시는 것도 추천합니다.

관련 글

댓글로 남기기 어려운 내용은 Contact Form 에서 개별적으로 문의 할 수 있습니다. 해당 글과 연관 된 내용은 Copy를 이용해 현재 페이지의 주소를 복사 후 문의 폼에 입력시 보다 정확한 답을 얻을 수 있습니다.

댓글 남기기