리눅스 ssh-keygen
IT 위키
더 많은 작업
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로 설정한다.
- SSH
- ssh 명령어 : 원격 호스트에 안전하게 접속한다.
- scp 명령어 : SSH를 이용하여 파일을 복사한다.
- chmod 명령어
- 리눅스 네트워크 보안