본문 바로가기
Infra2026년 7월 3일4분 읽기

Permission denied (publickey) — SSH 접속 오류 잡기

YS
김영삼
조회 673
Permission denied (publickey) — SSH 접속 오류 잡기

핵심 요약

Permission denied (publickey)는 "서버가 너의 공개키를 인정하지 않는다"는 뜻이다. 원인은 대개 넷 중 하나 — ①클라이언트가 맞는 키를 안 보냄, ②키 파일 권한이 너무 열려 있음, ③서버 authorized_keys공개키 미등록, ④사용자명·경로 오타. ssh -v로 어느 키를 시도하는지부터 본다.

1. 먼저 상세 로그로 진단

ssh -v user@host
# "Offering public key: ~/.ssh/id_ed25519" 같은 줄 확인
# 어떤 키를 시도하고 서버가 거절하는지 보인다

2. 원인별 점검

원인확인·해결
키 미지정ssh -i ~/.ssh/mykey user@host
키 권한 과다private key는 chmod 600
서버 미등록공개키를 서버 ~/.ssh/authorized_keys에 추가
사용자 오타ubuntu@·ec2-user@ 등 정확히

3. 권한이 핵심

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519       # private key
chmod 644 ~/.ssh/id_ed25519.pub
chmod 600 ~/.ssh/authorized_keys  # 서버 쪽

SSH는 키·디렉터리 권한이 느슨하면(다른 사용자가 읽을 수 있으면) 보안상 아예 무시한다. 이게 의외로 가장 흔한 원인이다.

4. 공개키 서버에 등록

# 가장 쉬운 방법
ssh-copy-id user@host

# 수동이면 공개키 내용을 서버 authorized_keys에 append
cat ~/.ssh/id_ed25519.pub | ssh user@host \
  'cat >> ~/.ssh/authorized_keys'

5. 에이전트·설정 팁

  • 키가 여러 개면 ssh-add ~/.ssh/mykey로 에이전트에 등록
  • ~/.ssh/config에 Host별 IdentityFile을 지정하면 매번 -i 안 써도 됨
  • 서버가 비밀번호 인증을 껐다면 키 인증만 되므로 키 문제를 반드시 해결해야 함

자주 묻는 질문

ssh -v를 봐도 뭘 봐야 할지 모르겠어요.

"Offering public key"로 어떤 키를 보내는지, 그 뒤 서버가 "Authentications that can continue"로 무엇을 요구하는지 보세요. 원하는 키를 아예 안 보내면 -i로 지정, 보내는데 거절되면 서버 등록·권한 문제입니다.

권한을 600으로 했는데도 안 돼요.

~/.ssh 디렉터리 자체(700)와 서버의 authorized_keys(600), 그리고 홈 디렉터리가 그룹 쓰기 가능하지 않은지도 확인하세요. 서버 홈이 drwxrwxr-x처럼 그룹 쓰기가 열려 있으면 SSH가 거부합니다.

비밀번호로는 되는데 키로만 안 됩니다.

공개키가 서버 authorized_keys에 없거나 형식이 깨진 경우가 많습니다. ssh-copy-id로 다시 등록하고, 서버의 /var/log/auth.log에서 거절 사유(Authentication refused: bad ownership 등)를 확인하세요.

댓글 0

아직 댓글이 없습니다.
Ctrl+Enter로 등록