systemd로 SSH 키 업데이트

2025-12-22

이 글은 예전에 적었던 블로그 글의 후속편으로 보실 수 있는데, SSH 키를 지속하도록 만드는 방법을 다루겠습니다. 요즘에는 systemd가 설치되어 있지 않은 리눅스 머신을 찾아보기 힘들 정도로 많이 보급되어 있는데, 반대로 crontab은 안 깔려있는 추세가 증가하고 있죠.

따라서 해당 머신에서는 그 글에 있는 스크립트를 서비스와 systemd.timer 유닛 파일을 사용하여 실행하는 방법을 작성하겠습니다. 이는 crontab이 하는 역할과 완전히 동일합니다.

systemd 유닛 파일 생성

SSH 키 업데이트는 사용자 권한으로도 충분히 실행 가능하기에, 사용자 유닛 파일을 생성하겠습니다.

mkdir -p ~/.config/systemd/user
touch ~/.config/systemd/user/ssh-key-update.service

이제 다음 내용을 원하시는 편집기로 붙여넣으세요:

[Unit]
Description=Update SSH keys from GitHub

[Service]
ExecStart=/path/to/update-ssh.sh

다음으로, ssh-key-update systemd 서비스를 실행해 줄 timer를 만들 차례입니다.

touch ~/.config/systemd/user/ssh-key-update.timer

다음을 붙여넣습니다:

[Unit]
Description=Update SSH keys from GitHub

[Timer]
OnBootSec=5min
OnUnitActiveSec=5min
Unit=ssh-key-update.service

[Install]
WantedBy=timers.target

타이머 활성화 및 실행

다음을 실행합니다:

systemctl --user enable --now ssh-key-update.timer

예전처럼 SSH 키가 주기적으로 다운로드되어 저장되는 것을 보실 수 있습니다. 하지만 로그아웃을 하면 업데이트가 멈추는 문제가 아직 있습니다.

Lingering 활성화

다음을 실행합니다:

loginctl enable-linger

이는 lingering을 활성화하는데, 그러면 로그인을 하지 않고도 systemd.timer가 계속해서 실행되도록 해 줍니다.