반응형
우분투에서 SSH 키가 만료되거나 만료될 예정일 경우 SSH 키를 교체하는 방법
SSH 키가 만료되거나 만료될 예정일 경우 키 롤오버(키 교체)를 통해 새로운 키 쌍을 생성하고 기존 키를 대체해야 합니다.
테스트 서버 구성
호스트 이름 | 아이피 주소 | 역할 | 비고 |
node1 | 192.168.10.111 | CA 서버 | |
node2 | 192.168.10.112 | SSH 서버 | |
node3 | 192.168.10.113 | SSH 클라이언트 |
1. 새로운 SSH 키 쌍 생성
사용자는 새로운 SSH 키 쌍을 생성해야 합니다.
ssh-keygen -f ~/.ssh/id_rsa_new -C "user1@node3"
- ~/.ssh/id_rsa_new : 새로 생성된 개인 키.
- ~/.ssh/id_rsa_new.pub : 새로 생성된 공개 키.
- -C "user1@node3" : 키에 대한 주석을 추가.
user1@node3:~$ ssh-keygen -f ~/.ssh/id_rsa_new -C "user1@node3"
2. 새로운 공개 키를 CA 서버로 전달
CA 기반의 SSH 인증서를 사용하는 경우 새로운 공개 키를 CA 서버로 전달하여 인증서를 발급받아야 합니다.
클라이언트 공개 키 전달(node3)
생성한 공개 키를 CA 서버(node1)로 복사합니다.
scp ~/.ssh/id_rsa_new.pub user1@192.168.10.111:/tmp/id_rsa_new.pub
user1@node3:~$ scp ~/.ssh/id_rsa_new.pub user1@192.168.10.111:/tmp/id_rsa_new.pub
3. CA 서버에서 새 공개 키를 서명
CA 서버에서 새로운 공개 키에 서명하여 인증서를 생성합니다.
클라이언트 공개 키에 서명(node1)
CA 서버에서 클라이언트의 공개 키를 서명하여 인증서를 생성합니다.
sudo ssh-keygen -s /etc/ssh/ssh_ca -I user1_new_cert -n user1 -V +52w -z 2 /tmp/id_rsa_new.pub
- -s /etc/ssh/ssh_ca : 서명을 위해 사용할 CA의 개인 키입니다.
- -I user1_cert : 인증서의 식별자입니다.
- -n user1 : 이 인증서를 사용할 사용자 이름입니다.
- -V +52w : 인증서의 유효 기간을 52주(1년)로 설정합니다.
- -z 2 : 인증서의 서명 순서 번호입니다.
- ~/.ssh/id_rsa.pub : 서명할 공개 키 파일입니다.
서명이 완료되면 /tmp/id_rsa_new-cert.pub라는 인증서 파일이 생성됩니다.
root@node1:~$ sudo ssh-keygen -s /etc/ssh/ssh_ca -I user1_new_cert -n user1 -V +52w -z 2 /tmp/id_rsa_new.pub
Signed user key /tmp/id_rsa_new-cert.pub: id "user1_new_cert" serial 2 for user1 valid from 2024-09-02T23:46:00 to 2025-09-01T23:47:25
인증서 배포(node1)
생성된 인증서를 클라이언트로 다시 전달합니다.
scp /tmp/id_rsa_new-cert.pub user1@192.168.10.113:/home/user1/.ssh/
root@node1:~$ scp /tmp/id_rsa_new-cert.pub user1@192.168.10.113:/home/user1/.ssh/
4. SSH 서버에 새로운 공개 키 배포
서버에서 CA의 공개 키를 신뢰할 수 있도록 SSH 서버를 구성합니다.
ssh user1@192.168.10.112 'cat >> ~/.ssh/authorized_keys' < ~/.ssh/id_rsa_new.pub
user1@node3:~$ ssh user1@192.168.10.112 'cat >> ~/.ssh/authorized_keys' < ~/.ssh/id_rsa_new.pub
자동화된 방법(SSH를 통해 키 추가)
기존 SSH 키가 아직 유효한 동안, SSH를 통해 새로운 공개 키를 서버에 추가할 수 있습니다.
ssh user@server 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys' < ~/.ssh/id_rsa_new.pub
5. 클라이언트에서 SSH 구성 업데이트
클라이언트에서 SSH 인증서를 사용하여 SSH 서버(node2)에 접속합니다.
vim ~/.ssh/config
Host server-alias
HostName 192.168.10.112
User user1
IdentityFile ~/.ssh/id_rsa_new
CertificateFile ~/.ssh/id_rsa_new-cert.pub
SSH 연결 테스트(node3)
SSH 인증서를 사용하여 서버에 접속합니다.
ssh -i ~/.ssh/id_rsa_new user1@192.168.10.112
user1@node3:~$ ssh -i ~/.ssh/id_rsa_new user1@192.168.10.112
6. 기존 키 폐기
서버 호스트 키에 서명하여 클라이언트가 서버의 호스트 키를 신뢰할 수 있도록 설정할 수도 있습니다.
rm ~/.ssh/id_rsa ~/.ssh/id_rsa-cert.pub
user1@node3:~$ rm ~/.ssh/id_rsa ~/.ssh/id_rsa-cert.pub
키 롤오버는 SSH 키의 보안을 유지하기 위해 필수적인 과정입니다. CA 기반의 SSH 인증서를 사용하면 키 만료 시 인증서만 갱신하여 새로운 키 쌍을 발급받는 과정이 간소화됩니다. 주기적으로 이 작업을 수행하여 보안성을 유지할 수 있습니다.
728x90
반응형
'리눅스' 카테고리의 다른 글
우분투에 ipmitool을 설치하고 사용하는 방법 (0) | 2024.09.06 |
---|---|
우분투에서 Ceph 클러스터를 구성하는 방법 (0) | 2024.09.03 |
우분투에서 SSH 인증서를 사용한 SSH 인증을 구성하고 설정하는 방법 (0) | 2024.09.02 |
우분투에서 시스템을 업데이트하는 방법 (0) | 2024.08.30 |
Kubernetes Dashboard 설치 (0) | 2024.08.29 |