Linux / 명령어 / ssh-keygen - SSH 키 쌍 생성과 지문 확인

ssh-keygen은 SSH 인증에 사용하는 개인키와 공개키 쌍을 만들고 지문을 확인합니다. 개인키는 자신의 컴퓨터에 안전하게 보관하고 공개키만 서버에 등록합니다.

ssh-keygen 명령어란?

공개키 인증에서 개인키는 서명에 사용되고 서버는 등록된 공개키로 이를 검증합니다. id_ed25519와 id_ed25519.pub처럼 공개키에는 보통 .pub가 붙습니다. 키 지문은 키 내용을 짧게 식별하는 값이며, 생성 시 암호문구(passphrase)를 설정하면 개인키 파일 유출에 대한 방어층이 됩니다.

기본 문법

ssh-keygen [옵션]

설치된 구현과 옵션은 배포판에 따라 다를 수 있습니다. man ssh-keygen으로 현재 시스템의 설명을 확인하세요.

사용 예제

Ed25519 키 쌍 만들기

기존 키를 덮어쓰지 않도록 새 파일명을 지정하고 암호문구를 설정합니다.

ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_work -C 'user@example.com'

공개키 지문 확인

서버에 등록할 키가 의도한 키인지 비교합니다.

ssh-keygen -lf ~/.ssh/id_ed25519_work.pub

개인키에서 공개키 재생성

공개키 파일을 잃어버렸을 때 개인키를 외부에 노출하지 않고 공개키를 출력합니다.

ssh-keygen -y -f ~/.ssh/id_ed25519_work

생성한 키의 지문 확인하기

키를 만든 뒤에는 공개키 파일의 지문을 조회해 서버에 등록하려는 키가 맞는지 확인할 수 있습니다. 실제 지문은 키마다 고유합니다.

ssh-keygen -lf ~/.ssh/id_ed25519_work.pub

출력 형식 예시(지문은 생략한 설명용 값):

256 SHA256:... user@example.com (ED25519)

앞의 256은 키 크기, 괄호 안은 키 유형입니다. 기존 파일 경로에 새 키를 만들면 이전 개인키가 덮어써질 수 있고, 그 키를 쓰던 서버에 접속하지 못할 수 있습니다. 공개키만 서버에 배포하며 개인키는 이메일·메신저·웹 폼에 업로드하지 마세요.

주요 옵션과 형식

옵션·형식 설명
-t 유형 ed25519 등 생성할 키 유형을 지정합니다.
-f 파일 키를 저장하거나 읽을 파일을 지정합니다.
-C 주석 공개키에 식별용 주석을 붙입니다.
-l 키 파일의 지문을 표시합니다.
-y 개인키에서 공개키를 출력합니다.
-p 기존 개인키의 암호문구를 변경합니다.

사용할 때 주의할 점

기존 키 경로를 재사용하면 예전 공개키로 접속하던 서버에 로그인하지 못할 수 있습니다. 생성 전 해당 파일이 있는지 확인하고 덮어쓰기 경고를 읽으세요. 개인키는 이메일·메신저·웹 페이지에 올리지 말고 권한과 백업을 관리합니다. 암호문구를 잃으면 보통 키를 복구할 수 없으므로 새 키 쌍을 발급하고 서버의 공개키를 교체해야 합니다.

자주 묻는 질문

서버에 어떤 파일을 복사해야 하나요?

확장자가 .pub인 공개키만 등록합니다. 확장자 없는 개인키는 로컬에 보관해야 합니다.

공식 문서

옵션의 정확한 동작과 구현별 차이는 ssh-keygen 관련 공식 문서에서 확인할 수 있습니다.

같은 카테고리의 다른 글
Linux / 명령어 / renice - 실행 중인 프로세스 nice 값 변경

Linux / 명령어 / renice - 실행 중인 프로세스 nice 값 변경

Linux renice 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / comm - 정렬된 두 파일의 공통·고유 행 비교

Linux / 명령어 / comm - 정렬된 두 파일의 공통·고유 행 비교

Linux comm 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / traceroute - 목적지까지 라우터 경로 추적

Linux / 명령어 / traceroute - 목적지까지 라우터 경로 추적

Linux traceroute 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux 강좌 / 리눅스란 무엇인가? 커널, 배포판, 오픈 소스 이해하기

Linux 강좌 / 리눅스란 무엇인가? 커널, 배포판, 오픈 소스 이해하기

리눅스 커널과 배포판은 어떻게 다를까요? 사용자 공간과 오픈 소스의 의미를 구분하고, 현재 시스템의 커널·배포판 정보를 확인하는 방법을 알아봅니다.

Linux / 명령어 / journalctl - systemd 시스템·서비스 로그 조회

Linux / 명령어 / journalctl - systemd 시스템·서비스 로그 조회

Linux journalctl 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 리눅스 디렉토리 구조와 주요 디렉토리별 용도

Linux / 리눅스 디렉토리 구조와 주요 디렉토리별 용도

리눅스의 /etc, /var, /usr, /home, /proc, /dev 등 주요 디렉토리별 용도와 이름의 의미를 정리합니다. 리눅스 파일시스템 구조를 처음 배우거나 서버 관리에 필요한 디렉토리를 확인할 때 참고할 수 있습니다.

Linux 강좌 / 파일과 디렉터리 관리 - 생성·복사·이동·삭제

Linux 강좌 / 파일과 디렉터리 관리 - 생성·복사·이동·삭제

실습 폴더에서 파일과 디렉터리를 만들고 복사·이동·삭제해 봅니다. 덮어쓰기와 삭제 전에 경로와 결과를 확인하는 습관도 익힙니다.

Linux / 명령어 / ip - 인터페이스·주소·라우팅 상태와 설정

Linux / 명령어 / ip - 인터페이스·주소·라우팅 상태와 설정

Linux ip 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / df - 파일 시스템의 남은 용량 확인

Linux / 명령어 / df - 파일 시스템의 남은 용량 확인

Linux df 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / pgrep - 조건에 맞는 프로세스 ID 검색

Linux / 명령어 / pgrep - 조건에 맞는 프로세스 ID 검색

Linux pgrep 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.