왜 SSH 키 기반 인증이 필수인가?
SSH 접속을 비밀번호 방식 그대로 운영하는 서버는
실무 기준으로 보면 거의 “열려 있는 서버”에 가깝습니다.
실제 운영 서버 로그를 보면 다음과 같습니다.
- 하루 수천 건의 로그인 시도
- root, admin, test 계정 무작위 공격
- 사전 대입(Brute Force) 시도 반복
비밀번호는 언젠가 뚫린다고 가정해야 합니다.
그래서 실무 서버에서는 반드시 다음 원칙을 따릅니다.
SSH 키 기반 인증 사용
비밀번호 로그인 차단
이번 글에서는
이 원칙을 실제 서버에 적용하는 전 과정을 다룹니다.
SSH 키 기반 인증 구조 이해
SSH 키 인증은 쌍(pair) 으로 작동합니다.
| 구분 | 역할 |
|---|---|
| 개인키 (Private Key) | 내 PC에 보관 |
| 공개키 (Public Key) | 서버에 등록 |
- 개인키는 절대 외부 유출 금지
- 공개키는 서버에 저장되어도 안전
서버는 “공개키와 맞는 개인키를 가진 사용자”만 허용합니다.
1단계 – SSH 키 생성 (클라이언트 PC)
Mac / Linux 기준
터미널에서 다음 명령어를 실행합니다.
ssh-keygen
기본 질문이 순서대로 나옵니다.
Enter file in which to save the key (/Users/user/.ssh/id_rsa):
엔터 (기본 경로 사용)
Enter passphrase (empty for no passphrase):
엔터 또는 비밀번호 입력 (실무에서는 입력 권장)
생성 결과:
~/.ssh/id_rsa ← 개인키
~/.ssh/id_rsa.pub ← 공개키
2단계 – 서버에 공개키 등록
방법 1. ssh-copy-id (가장 쉬운 방법)
ssh-copy-id ubuntu@서버IP
- 서버 비밀번호 입력
- 자동으로 공개키 등록
접속이 가능한 상태라면 이 방법이 가장 안전합니다.
방법 2. 수동 등록 (실무에서 많이 사용)
1) 공개키 확인
cat ~/.ssh/id_rsa.pub
출력된 전체 내용을 복사합니다.
2) 서버 접속 후 등록
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
공개키 붙여넣기 → 저장
chmod 600 ~/.ssh/authorized_keys
권한이 틀리면 접속 자체가 실패합니다.
3단계 – 키 기반 접속 테스트
서버에서 로그아웃 후 다시 접속합니다.
ssh ubuntu@서버IP
- 비밀번호 없이 접속되면 성공
- 또는 키 비밀번호만 요구됨
이 단계에서 반드시 테스트해야 합니다.
4단계 – 비밀번호 로그인 차단 (중요)
이 단계는 키 접속이 정상 확인된 후에만 진행하세요.
SSH 설정 파일 수정
sudo nano /etc/ssh/sshd_config
아래 항목을 찾아 수정합니다.
PasswordAuthentication no
ChallengeResponseAuthentication no
root 로그인도 함께 차단 권장:
PermitRootLogin no
SSH 서비스 재시작
sudo systemctl restart sshd
또는
sudo service ssh restart
실무 검증 테스트 (필수)
다른 터미널에서 일부러 테스트합니다.
ssh 다른계정@서버IP
결과:
Permission denied (publickey)
정상입니다.
비밀번호 로그인 완전 차단 성공.
실무에서 자주 발생하는 실수 TOP 5
- 키 접속 테스트 안 하고 비밀번호 차단
- authorized_keys 권한 오류
- 다른 계정에 키 등록
- 개인키 분실
- root 로그인 허용 유지
이 중 하나라도 걸리면 서버 접근 불가 사고로 이어집니다.
실무 운영 팁 (중요)
- 개인키는 PC + 암호화된 백업 2중 보관
- 팀 작업 시 계정별 키 분리
- 퇴사자 키 즉시 제거
- Bastion 서버 구조 고려
SSH 전체 흐름과 보안 구조는 아래 Pillar 글에서 확인하세요.
[SSH 실무 완전정복] 접속부터 보안·운영 한방 정리 가이드
이전 글:
▶ 다음 편 예고
다음 편에서는
실제 공격을 줄이는 핵심 설정을 다룹니다.
[SSH 실무 완전정복] 4편 – SSH 포트 변경과 기본 보안 설정 (실무 필수)
- 포트 변경 이유
- 실무 권장 포트
- 방화벽 연동




