비밀번호로 서버에 접속하면 매번 입력해야 하고, 추측·유출 위험도 있습니다. SSH 키 인증은 이를 한 쌍의 키로 바꿉니다. 헷갈리는 핵심은 하나, 공개키는 서버에 두고 개인키는 절대 내 손을 떠나지 않는다는 점입니다.
공개키와 개인키, 어디에 두나
SSH 키 인증은 짝을 이루는 두 파일을 씁니다. 개인키(id_ed25519)는 내 컴퓨터에만 보관하고, 공개키(id_ed25519.pub)는 접속할 서버에 등록합니다. 서버는 공개키로 "이 사람이 짝이 맞는 개인키를 가졌는지"만 검증하므로, 개인키 자체는 네트워크로 전송되지 않습니다.
| 구분 | 개인키 (private) | 공개키 (public) |
|---|---|---|
| 보관 위치 | 내 컴퓨터에만 | 접속할 서버에 등록 |
| 공유 | 절대 금지 | 자유롭게 배포 가능 |
| 파일명 예시 | id_ed25519 | id_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는 등록된 공개키를 한 줄에 하나씩 담는 파일입니다. 여기에 내 공개키가 있으면 비밀번호 없이 접속됩니다.
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에 공개키 등록.~/.ssh는700,authorized_keys는600으로 권한을 맞추세요.
SSH 접속·키 인증·서버 보안 설정을 직접 다뤄보는 실습은 리눅스 트랙에서 회원가입 없이 무료로 익힐 수 있습니다.