SSH Key 인증 설정
기본 개념
내 client (노트북) 서버
───────────────── ─────────────────
private key (비밀) ↔ public key (공개)
id_ed25519 ~/.ssh/authorized_keys
Key 생성 (client에서)
ssh-keygen -t ed25519 -C "내 코멘트"
생성 파일:
~/.ssh/id_ed25519→ private key, 절대 공유 X~/.ssh/id_ed25519.pub→ public key, 서버에 등록
서버에 Public Key 등록
Linux/Mac
ssh-copy-id 계정명@서버주소
Windows (ssh-copy-id 없음)
# 방법 1 — 한 번에
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh 계정명@서버주소 "cat >> ~/.ssh/authorized_keys"
# 방법 2 — 수동으로 서버에서
echo "pub키 내용" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
권한 설정 (반드시 지켜야 함)
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
권한이 틀리면 SSH가 인증을 거부함.
문제 해결
접속 안 될 때 — verbose 모드
ssh -v 서버별칭
어디서 실패하는지 로그가 나옴.
소유자 문제
cat ~/.ssh/authorized_keys가 자기 파일인데 허가 거부가 뜨면 소유자가 잘못된 것:
ls -la ~/.ssh/
# 소유자 확인
sudo chown -R 계정명:계정명 ~/.ssh
sudo chmod 700 ~/.ssh
sudo chmod 600 ~/.ssh/authorized_keys
chown vs chmod 혼동 주의
chown→ 소유자 변경 (chown server1:server1)chmod→ 권한 변경 (chmod 700)chown 700 ~/.ssh처럼 쓰면 소유자가 숫자 700으로 잘못 설정됨
authorized_keys 내용 확인
cat ~/.ssh/authorized_keys
# 로컬 fingerprint 확인 (Windows)
ssh-keygen -l -f $env:USERPROFILE\.ssh\id_ed25519.pub
# 두 값 일치하는지 비교
임시 접근 부여
추천: 임시 public key 등록 후 삭제
# 추가
echo "상대방_pub_key" >> ~/.ssh/authorized_keys
# 기간 후 삭제
nano ~/.ssh/authorized_keys # 해당 줄 삭제
sshd_config 건드릴 필요 없고 보안도 강함.
연결 개념
- ssh-sshd-config — 서버 SSH 보안 설정