learn

SSH Key 인증 설정

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 건드릴 필요 없고 보안도 강함.


연결 개념