리눅스 서버를 운영한다면 가장 먼저 신경 써야 할 부분이 SSH 접속 보안입니다. 기본적인 비밀번호 인증 방식은 무차별 대입 공격(Brute Force)에 취약하기 때문에, SSH 키 인증 방식을 사용하는 것이 권장됩니다. 이 글에서는 SSH 키를 생성하고, 서버에 적용하여 안전하게 접속하는 방법을 단계별로 안내합니다.
1. SSH 키 인증 방식이란?
SSH 키 인증 방식은 공개키/개인키 쌍을 이용하여 비밀번호 없이 안전하게 서버에 접속하는 방법입니다. 사용자는 개인키를 로컬에 보관하고, 서버에는 공개키만 등록함으로써 인증을 수행합니다.
장점:
- 비밀번호 유출 걱정 없이 접속 가능
- 무차별 대입 공격 차단
- 자동화 및 스크립트 환경에 적합
2. SSH 키 생성 방법 (로컬 PC)
Linux, macOS, Windows(WSL, Git Bash 등)에서 다음 명령어로 SSH 키를 생성할 수 있습니다:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
설정 흐름:
- 파일 경로 입력 (기본값
~/.ssh/id_rsa
) - 암호(passphrase) 설정 여부 선택
id_rsa
(개인키),id_rsa.pub
(공개키) 생성
생성된 키는 ~/.ssh
디렉토리에 저장되며, 개인키는 절대로 외부에 유출되지 않도록 주의해야 합니다.
3. 공개키 서버에 등록하기
다음 방법 중 하나로 생성된 공개키(.pub
)를 서버에 등록할 수 있습니다.
방법 1: ssh-copy-id (가장 간편)
ssh-copy-id -i ~/.ssh/id_rsa.pub 사용자명@서버IP
방법 2: 수동 등록
scp ~/.ssh/id_rsa.pub 사용자명@서버IP:/home/사용자명/
# 서버 접속 후
mkdir -p ~/.ssh
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
등록이 완료되면 클라이언트 PC에서 ssh -i ~/.ssh/id_rsa 사용자명@서버IP
로 접속이 가능해집니다.
4. 비밀번호 로그인 차단 설정
SSH 키 인증을 설정한 후에는 비밀번호 로그인 방식을 비활성화하여 보안을 더욱 강화할 수 있습니다.
sudo nano /etc/ssh/sshd_config
# 다음 항목을 수정
PasswordAuthentication no
ChallengeResponseAuthentication no
# SSH 서비스 재시작
sudo systemctl restart ssh
주의: 키 인증으로 접속이 정상적으로 되는지 확인한 후 위 설정을 적용하세요.
5. SSH 포트 변경으로 추가 보안
기본 포트(22번)는 공격 대상이 되기 쉬우므로 포트를 변경하면 기초적인 스캐닝 차단 효과를 볼 수 있습니다.
sudo nano /etc/ssh/sshd_config
# 예시: 2222번으로 변경
Port 2222
# UFW 방화벽에서 새 포트 허용
sudo ufw allow 2222/tcp
sudo systemctl restart ssh
6. 클라이언트 설정 간소화 (config 파일 사용)
여러 서버에 SSH 키로 접속하는 경우, ~/.ssh/config
파일을 사용하면 접속 명령어를 간편하게 만들 수 있습니다.
Host myserver
HostName 123.456.789.0
User ubuntu
Port 2222
IdentityFile ~/.ssh/id_rsa
이후 ssh myserver
명령어만으로 간단히 접속할 수 있습니다.
7. 보안을 위한 추가 팁
- 개인키는 반드시 비밀번호(Passphrase) 설정
- 서버에서
authorized_keys
파일 접근 권한 철저히 제한 - 정기적으로 SSH 로그(
/var/log/auth.log
) 확인 - Fail2Ban과 병행하여 SSH 접근 제한
- 불필요한 포트 차단 (방화벽 설정)
8. 비밀번호 인증 복구 방법 (비상 시)
실수로 SSH 키만 등록한 후 접속에 실패하거나, 개인키 분실 시에는 다음과 같은 방법으로 복구할 수 있습니다:
- 호스팅 콘솔(VPS, 클라우드)에서 웹 콘솔 접속
/etc/ssh/sshd_config
파일에서PasswordAuthentication yes
로 수정- 비밀번호 로그인 임시 허용 후 키 재등록
- 재설정 완료 후 다시 비밀번호 로그인 차단
9. SSH 키 인증 vs 비밀번호 인증 요약 비교
항목 | 비밀번호 인증 | SSH 키 인증 |
---|---|---|
보안 수준 | 낮음 | 높음 |
무차별 공격 취약 | 예 | 아니오 |
자동화 적합성 | 낮음 | 높음 |
운영 편의성 | 간단 | 설정 후 매우 편리 |
10. 결론: 서버 보안의 시작은 SSH 키 설정
리눅스 서버를 안전하게 운영하기 위해서는 SSH 키 인증 방식을 도입하는 것이 필수입니다. 비밀번호 기반의 로그인은 더 이상 안전하지 않으며, 키 인증을 통해 더 빠르고, 더 안전한 접속이 가능합니다.
이 글을 따라 SSH 키를 설정하고, 비밀번호 로그인을 차단했다면 이제 한 단계 더 안전한 서버 운영 환경을 갖추게 된 것입니다. 다음 글에서는 UFW 방화벽 고급 설정 및 포트 관리 전략을 다룰 예정입니다.