Ubuntu에서 개발을 하다 보면, 터미널을 열 때마다 ssh-add를 다시 실행해야 해서 번거로운 순간이 생긴다. Git이나 원격 서버에 접속할 때마다 비밀번호를 반복 입력하는 일은 단순한 작업 같지만, 개발 흐름을 끊어버리기 충분하다. 이 문제를 해결하려면 ssh-agent를 항상 실행된 상태로 유지하는 설정이 필요하다.
여기서는 Ubuntu 환경에서 ssh-agent를 지속적으로 유지시키는 방법을 소개한다. 한 번 설정하면 재부팅 이후에도 자연스럽게 ssh-agent가 살아 있기 때문에, 더 이상 반복적인 인증 작업에 방해받지 않게 된다.

ssh-agent를 상시 유지하는 가장 좋은 방식: systemd User Service
Ubuntu는 서비스 실행을 systemd로 관리한다. ssh-agent를 systemd user 서비스로 등록하면 로그인 시 자동으로 실행되며, 터미널에서도 동일한 소켓을 공유하게 된다.
먼저 user-level systemd 디렉터리를 만든다.
mkdir -p ~/.config/systemd/user
이제 서비스를 정의하는 파일을 만든다.
# ~/.config/systemd/user/ssh-agent.service
[Unit]
Description=SSH Agent
[Service]
Type=simple
Environment=SSH_AUTH_SOCK=%t/ssh-agent.socket
ExecStart=/usr/bin/ssh-agent -D -a $SSH_AUTH_SOCK
[Install]
WantedBy=default.target
이 서비스는 ssh-agent를 하나만 실행하고, 모든 터미널이 동일한 소켓을 공유할 수 있게 해준다.
서비스를 활성화한다.
systemctl --user enable ssh-agent
systemctl --user start ssh-agent
이제 ssh-agent는 백그라운드에서 항상 실행된다.
SSH_AUTH_SOCK 환경 변수 설정
ssh-agent와 터미널을 연결하기 위해, 환경 변수로 소켓 파일 위치를 지정해야 한다.
bash 또는 zsh 설정 파일에 아래 라인을 추가한다.
export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/ssh-agent.socket"
이제 새 터미널을 열어도 자동으로 ssh-agent에 연결된다.
private 인증키를 agent에 등록하기
이제 키만 한 번 등록해주면 된다.
ssh-add ~/.ssh/id_rsa
이제부터는 재부팅 후에도 ssh-agent가 살아 있으므로 다시 ssh-add를 입력할 필요가 없다.
마무리
ssh-agent는 작지만 개발자의 작업 흐름을 유연하게 해주는 중요한 도구다. systemd에 등록해두면 Ubuntu 환경에서 ssh-agent를 깔끔하게 유지할 수 있고, 반복적인 인증 작업을 크게 줄일 수 있다. 특히 서버 환경이나 장기간 유지되는 개발 환경에서 매우 유용하다.
댓글 남기기