본문 바로가기

리눅스

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

반응형

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