Views: 0
SSH 키 기반 인증을 설정하면 비밀번호 없이 서버에 접속할 수 있어야 정상이다. 하지만 공개키를 등록했음에도 접속 시 계속 비밀번호를 요구하는 경우가 있으며, 이는 파일 권한 설정 오류, SSH 설정 파일 미반영, 서버 보안 정책 등 다양한 원인에서 비롯된다. 이러한 문제는 보안 초기 설정 단계에서 흔히 발생하므로 정확한 원인 파악과 해결이 중요하다.
목차
SSH 키 기반 인증의 기본 원리
ssh-keygen 명령으로 생성된 키는 두 가지 파일로 구성된다.
- private key: 클라이언트에 저장, 절대 외부에 공개해서는 안 됨
- public key: 서버의
~/.ssh/authorized_keys에 등록해 사용
클라이언트는 개인키로 서명하며, 서버는 authorized_keys의 공개키로 이를 확인한다. 이 과정이 맞으면 비밀번호 없이 로그인할 수 있다.
공개키 접속 시 비밀번호가 요구되는 주요 원인
1. 권한 및 소유권이 올바르지 않은 경우
SSH는 보안상 매우 엄격한 권한 정책을 따른다. 권한이 너무 넓게 열려 있으면 인증 자체를 무시한다.
필수 권한 설정
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chown -R 사용자명:사용자명 ~/.ssh
.ssh 디렉터리나 authorized_keys 파일이 다른 사용자에게 열려 있거나 root 소유인 경우에는 SSH가 키 인증을 거부할 수 있다.
2. 공개키 파일 위치가 잘못된 경우
공개키는 반드시 ~/.ssh/authorized_keys에 저장되어 있어야 하며, 파일 이름이 authorized_keys가 아니면 인증되지 않는다. 또한 줄바꿈이나 공백이 포함된 경우에도 오류가 발생한다.
확인 방법
cat ~/.ssh/authorized_keys
3. SSH 서버 설정 파일(sshd_config) 문제
SSH 서버 설정이 올바르지 않으면 공개키 인증이 비활성화된다. /etc/ssh/sshd_config 파일에서 아래 항목을 확인한다.
필수 설정
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no (필요 시 yes로 유지 가능)
ChallengeResponseAuthentication no
설정 변경 후에는 반드시 SSH 데몬을 재시작해야 한다.
systemctl restart sshd
4. SELinux 또는 보안 정책 제한
SELinux가 활성화된 상태에서 .ssh 디렉터리의 보안 컨텍스트가 올바르지 않으면 접속이 거부된다.
해결 방법
restorecon -Rv ~/.ssh
또는 /var/log/secure 로그에서 SELinux denied 관련 메시지를 확인해 원인을 찾을 수 있다.
5. 홈 디렉터리 권한이 너무 넓은 경우
홈 디렉터리의 권한도 755 이상으로 열려 있으면 SSH가 보안상 인증을 거부할 수 있다.
권장 설정
chmod 700 ~
- SSH 공개키 붙여넣을 때 줄바꿈 삽입
ssh-rsa,ssh-ed25519앞에 공백 존재- Windows에서 저장 시 줄바꿈(CRLF) 문제
이 경우 키가 인식되지 않으므로 정확한 문자열이 유지되어야 한다.
문제 해결 단계별 점검 순서
- SSH 키 생성 및 등록 확인
ssh-keygen -t rsa -b 4096
ssh-copy-id 사용자@서버
- 서버에서 authorized_keys 확인
cat ~/.ssh/authorized_keys
- 파일 권한 점검
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chown -R 사용자:사용자 ~/.ssh
- SSH 설정 확인
cat /etc/ssh/sshd_config | grep -E "Pubkey|PasswordAuthentication"
- SSH 서비스 재시작
systemctl restart sshd
- 로그에서 실패 원인 확인
tail -f /var/log/secure (CentOS, RHEL 계열)
tail -f /var/log/auth.log (Ubuntu, Debian 계열)
비밀번호 인증을 아예 차단하려면
모든 사용자가 반드시 공개키 기반으로만 접속하도록 설정하려면 SSH 설정 파일에서 다음과 같이 변경한다.
PasswordAuthentication no
ChallengeResponseAuthentication no
설정 후 SSH를 재시작하면 비밀번호 로그인이 완전히 차단되고 공개키 인증만 허용된다.
결론
SSH 공개키 인증을 설정했는데도 비밀번호가 뜨는 문제는 대부분 파일 권한, authorized_keys 위치 오류, sshd_config 설정 누락에서 발생한다. 기본 구조만 명확히 이해하고 권한, 설정, 로그를 점검하면 빠르게 해결할 수 있다. 공개키 인증은 자동화, 무중단 배포, 서버 보안을 위해 필수적인 기술인 만큼 정확하게 구성해두는 것이 중요하다.