Cryptology Academy · 강의

공개 키 인증과 에이전트 전달

authorized_keys, Ed25519와 RSA 키의 차이, SSH 에이전트 전달의 보안 영향을 이해합니다.

레슨 2/413개 단계

공개 키 인증과 에이전트 전달은(는) CoddyKit의 무료 Cryptology Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cryptology Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

authorized_keys 파일 형식

SSH 공개 키 인증은 서버의 일반적으로 ~/.ssh/authorized_keys에 위치하는 authorized_keys 파일을 사용합니다. 각 줄에는 다음 형식의 공개 키가 들어 있습니다: 알고리즘 base64-key 주석. 서버는 클라이언트가 인증 요청에 서명하여 대응하는 개인 키를 소유하고 있음을 증명할 수 있는지 확인합니다.

ssh-keygen으로 SSH 키 생성

ssh-keygen 명령은 인증에 사용할 키 쌍을 생성합니다. ssh-keygen -t ed25519를 실행하면 최신 Ed25519 키 쌍이 생성됩니다. 식별을 위해 -C로 주석을 지정할 수 있으며, 이메일 주소 등을 사용할 수 있습니다. 이 도구는 기본적으로 개인 키(id_ed25519)와 공개 키(id_ed25519.pub)를 ~/.ssh에 저장합니다.

키 유형 비교: RSA, ECDSA, Ed25519

RSA 4096비트 키는 레거시 시스템과의 호환성이 매우 높지만 서명 속도가 느립니다. NIST P-256을 사용하는 ECDSA는 더 빠르고 서명 크기도 작지만, 일부 암호학자는 NIST 곡선 매개변수의 선정 과정에 의문을 제기합니다. Curve25519를 기반으로 하는 Ed25519는 현재 가장 권장되는 방식입니다. 빠르고 키와 서명 크기가 작으며 알려진 약점이 없고, 모든 최신 SSH 구현에서 사용할 수 있기 때문입니다.

암호로 보호되는 개인 키

개인 키 파일은 암호로 보호해야 합니다. ssh-keygen은 암호에서 파생한 키를 사용하여 개인 키를 암호화합니다(최신 키에는 bcrypt 사용). 따라서 공격자가 파일을 훔치더라도 암호 없이는 파일을 사용할 수 없습니다. 암호가 없으면 파일에 접근할 수 있는 누구나 대응하는 공개 키가 등록된 모든 서버에서 사용자인 것처럼 인증할 수 있습니다.

키 관리를 위한 ssh-agent

ssh-agent 데몬은 로그인 세션 동안 복호화된 개인 키를 메모리에 보관합니다. ssh-add ~/.ssh/id_ed25519로 키를 로드하면 암호를 한 번 입력하라는 메시지가 표시됩니다. 이후 SSH 연결에서는 암호를 다시 입력하지 않고 에이전트에 인증 요청 서명을 맡길 수 있어 보안과 편리함을 함께 얻을 수 있습니다.

ssh-agent가 인증 요청에 서명하는 방식

SSH 서버가 인증 요청을 보내면 SSH 클라이언트는 Unix 소켓을 통해 서명을 ssh-agent에 위임합니다. 에이전트는 메모리에 저장된 개인 키를 사용하여 암호화 서명을 수행하고 서명만 반환합니다. 개인 키의 바이트 데이터는 SSH 클라이언트 자체로 전달되는 경우를 포함하여 어떤 경우에도 에이전트 프로세스 밖으로 나가지 않습니다.

에이전트 전달: 기능과 위험

에이전트 전달(ForwardAgent yes 또는 ssh -A)을 사용하면 원격 SSH 세션에서 로컬 에이전트를 통해 다음 서버에 인증할 수 있습니다. 이를 이용하면 개인 키를 배스천 호스트에 복사하지 않고도 배스천 호스트를 거쳐 이동할 수 있습니다. 그러나 배스천 호스트가 침해되면 해당 호스트의 root 사용자가 에이전트 소켓에 접근하여 사용자인 것처럼 모든 서버에 인증할 수 있습니다.

배스천 호스트에서 ProxyJump와 ForwardAgent 비교

ProxyJump(ssh -J bastion target)는 배스천 호스트에 접근할 때 ForwardAgent보다 안전한 대안입니다. 배스천 호스트에 에이전트 소켓을 노출하지 않고 배스천 호스트를 통과하는 TCP 터널을 만듭니다. 대상 서버는 로컬 클라이언트에서 직접 연결을 받고, 배스천 호스트는 암호화된 TCP 바이트만 전달할 뿐 사용자의 자격 증명을 사용할 수 없습니다.

SSH 인증서 인증

SSH는 인증 기관(CA)이 호스트 및 사용자 공개 키에 서명하는 인증서 기반 인증을 지원합니다. 모든 서버에 개별 공개 키를 배포하는 대신, 서버가 CA를 신뢰하도록 설정합니다. 서명된 사용자 인증서는 해당 CA를 신뢰하는 모든 서버에 대한 접근 권한을 부여하며, 인증서 안에 만료 시간과 사용자 식별자 제한을 선택적으로 포함할 수 있습니다.

대량 키 수집을 위한 ssh-keyscan

ssh-keyscan 도구는 하나 이상의 호스트에 연결하여 인증 없이 호스트 공개 키를 가져옵니다. 배포 스크립트에서 known_hosts 파일을 자동으로 작성할 때 유용합니다. 출력은 known_hosts 파일로 직접 파이프할 수 있습니다: ssh-keyscan -H example.com >> ~/.ssh/known_hosts.

키 인증 흐름 요약

공개 키 인증의 흐름은 다음과 같습니다. 클라이언트가 공개 키를 보내고, 서버가 authorized_keys를 확인하며, 서버가 세션 식별자로 서명된 인증 요청을 보내고, 클라이언트가 에이전트를 통해 개인 키로 이에 서명하며, 서버가 저장된 공개 키를 사용하여 서명을 검증합니다. 서명이 유효하면 비밀 자격 증명을 전송하지 않고 인증이 완료됩니다.

SSH 키 유형 선택

속도, 작은 키 크기, 뛰어난 보안 특성 때문에 새로운 배포에서 현재 가장 권장되는 SSH 키 유형은 무엇입니까?

공개 키 인증 복습

핵심 내용은 다음과 같습니다. 공개 키는 authorized_keys에 저장하고, 개인 키는 암호로 보호하며, ssh-agent를 사용하여 복호화된 키를 메모리에 보관하고, Ed25519 키 유형을 우선적으로 사용하십시오. 또한 에이전트 소켓이 노출되지 않도록 배스천 호스트에 접근할 때 ForwardAgent 대신 ProxyJump를 사용하고, 확장 가능한 접근 관리에는 SSH 인증서 사용을 고려하십시오.

무료로 시작

AI 튜터와 함께 Cryptology Academy을(를) 배우세요 — 무료

브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.

코스
67
레슨
261

자주 묻는 질문

“공개 키 인증과 에이전트 전달” 강의는 무료인가요?

네 — “공개 키 인증과 에이전트 전달” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cryptology Academy 강의 전체를 잠금 해제할 수 있습니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“공개 키 인증과 에이전트 전달”에서 뭘 배우나요?

authorized_keys, Ed25519와 RSA 키의 차이, SSH 에이전트 전달의 보안 영향을 이해합니다. 브라우저에서 직접 실행하는 실습 코드로 Cryptology Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Cryptology Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Cryptology Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“공개 키 인증과 에이전트 전달” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Cryptology Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Cryptology Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. SSH 핸드셰이크와 호스트 키 인증
  2. 공개 키 인증과 에이전트 전달
  3. SSH 터널링과 포트 전달 기법
  4. SSH 강화와 감사 모범 사례
← Cryptology Academy(으)로 돌아가기