리눅스

우분투에서 SSH 키가 만료되거나 만료될 예정일 경우 SSH 키를 교체하는 방법

변군이글루 2024. 9. 3. 00:06
반응형

우분투에서 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
반응형