본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

SSH에서 사용하는 공개 키·개인 키 쌍을 생성하고 관리한다.

  • 경로 : /usr/bin/ssh-keygen
  • 패키지 : openssh
  • 기본 생성 파일 : ~/.ssh/id_rsa(개인 키), ~/.ssh/id_rsa.pub(공개 키). 키 유형에 따라 id_ecdsa, id_ed25519 등으로 이름이 바뀐다.
  • 공개 키 인증에서 서버는 사용자의 ~/.ssh/authorized_keys 파일에 등록된 공개 키로 접속을 허용한다.
$ ssh-keygen [-t 유형] [-b 비트수] [-f 파일] [-C 주석] [-N 암호문]
  • -t 유형 : 생성할 키의 유형을 지정한다. rsa, ecdsa, ed25519, dsa 등이 있다. Rocky Linux 8(OpenSSH 8.0)에서는 지정하지 않으면 rsa이다. (OpenSSH 9.5 이후는 ed25519)
  • -b 비트수 : 키 길이를 지정한다. RSA는 기본 3072비트(OpenSSH 8.0 이후)이다.
  • -f 파일 : 키 파일 이름을 지정한다.
  • -C 주석 : 공개 키 끝에 붙는 주석을 지정한다. 보통 사용자@호스트 형식을 쓴다.
  • -N 암호문 : 개인 키를 보호할 새 암호문(passphrase)을 지정한다. 빈 문자열("")이면 암호문 없이 만든다.
  • -p : 기존 개인 키의 암호문을 변경한다.
  • -l : 키 파일의 지문(fingerprint)을 출력한다.
  • -E 해시 : 지문 출력에 사용할 해시 알고리즘(md5, sha256)을 지정한다.
  • -y : 개인 키를 읽어 대응하는 공개 키를 출력한다.
  • -R 호스트 : known_hosts 파일에서 해당 호스트의 키를 삭제한다. 서버 키가 바뀌어 경고가 날 때 사용한다.
  • -F 호스트 : known_hosts 파일에서 해당 호스트의 키를 찾아 출력한다.
# 기본 설정(RSA)으로 키 쌍을 만든다. 저장 위치와 암호문을 대화형으로 묻는다.
$ ssh-keygen

# Ed25519 키를 주석과 함께 만든다.
$ ssh-keygen -t ed25519 -C "[email protected]"

# 4096비트 RSA 키를 암호문 없이 지정한 파일로 만든다.
$ ssh-keygen -t rsa -b 4096 -f ~/.ssh/backup_key -N ""

# 공개 키를 원격 서버의 authorized_keys에 등록한다.
$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

# 키의 지문을 출력한다.
$ ssh-keygen -l -f ~/.ssh/id_rsa.pub

# 서버를 재설치하여 호스트 키가 바뀐 경우 known_hosts에서 기존 키를 지운다.
$ ssh-keygen -R 192.168.10.20
  • 키 쌍 생성 후 공개 키(.pub)를 원격 서버의 ~/.ssh/authorized_keys에 넣어야 비밀번호 없이 접속할 수 있다.
  • ~/.ssh 디렉터리는 700, authorized_keys와 개인 키는 600 권한이어야 한다. 권한이 너무 넓으면 sshd가 키 인증을 거부한다.
  • 서버 측에서 키 인증을 허용하는 설정은 /etc/ssh/sshd_config의 PubkeyAuthentication이며, 비밀번호 인증을 막으려면 PasswordAuthentication no로 설정한다.