← 아티클 목록

ssh 키 인증 설정 — 공개키·개인키로 비밀번호 없이 접속

2028-12-18#linux#ssh#보안

비밀번호로 서버에 접속하면 매번 입력해야 하고, 추측·유출 위험도 있습니다. SSH 키 인증은 이를 한 쌍의 키로 바꿉니다. 헷갈리는 핵심은 하나, 공개키는 서버에 두고 개인키는 절대 내 손을 떠나지 않는다는 점입니다.

공개키와 개인키, 어디에 두나

SSH 키 인증은 짝을 이루는 두 파일을 씁니다. 개인키(id_ed25519)는 내 컴퓨터에만 보관하고, 공개키(id_ed25519.pub)는 접속할 서버에 등록합니다. 서버는 공개키로 "이 사람이 짝이 맞는 개인키를 가졌는지"만 검증하므로, 개인키 자체는 네트워크로 전송되지 않습니다.

구분개인키 (private)공개키 (public)
보관 위치내 컴퓨터에만접속할 서버에 등록
공유절대 금지자유롭게 배포 가능
파일명 예시id_ed25519id_ed25519.pub
역할신원 증명신원 검증
권한600 (본인만)644 무방

키 만들고 등록하기

먼저 내 컴퓨터에서 키 쌍을 생성합니다.

로컬 터미널
ssh-keygen -t ed25519 -C "klksm13@gmail.com"

엔터로 기본 경로(~/.ssh/id_ed25519)를 받고, 암호문구(passphrase)는 개인키 자체를 한 번 더 잠그는 비밀번호라 설정해두는 편이 안전합니다. 만들어진 공개키를 서버의 ~/.ssh/authorized_keys에 추가하면 등록 완료입니다.

로컬 터미널
ssh-copy-id user@server          # 공개키를 자동으로 등록
# 또는 수동으로:
cat ~/.ssh/id_ed25519.pub        # 공개키 내용 확인 후
# 서버의 ~/.ssh/authorized_keys 에 한 줄로 붙여넣기

authorized_keys는 등록된 공개키를 한 줄에 하나씩 담는 파일입니다. 여기에 내 공개키가 있으면 비밀번호 없이 접속됩니다.

OUTPUT
Now try logging into the machine, with:   "ssh 'user@server'"

권한이 너무 열려 있으면 SSH가 보안상 키를 거부하므로 다음을 맞춰둡니다.

로컬 터미널
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

마지막으로 ssh user@server로 접속해 비밀번호를 묻지 않으면 성공입니다. 운영 서버라면 /etc/ssh/sshd_config에서 PasswordAuthentication no로 비밀번호 로그인을 막아 키 인증만 허용하는 게 안전합니다.

요점 정리

  • 키는 개인키(내 손) + 공개키(서버) 한 쌍으로 동작합니다.
  • 개인키는 절대 공유하지 않고, 공개키만 서버에 등록합니다.
  • ssh-keygen으로 생성, authorized_keys에 공개키 등록.
  • ~/.ssh700, authorized_keys600으로 권한을 맞추세요.

SSH 접속·키 인증·서버 보안 설정을 직접 다뤄보는 실습은 리눅스 트랙에서 회원가입 없이 무료로 익힐 수 있습니다.