systemd가 관리하는 스크립트로 시작된 SSH 에이전트를 종료하는 방법은 무엇입니까?

systemd가 관리하는 스크립트로 시작된 SSH 에이전트를 종료하는 방법은 무엇입니까?

사용자가 로그인할 때 ssh-agent 인스턴스를 시작하고 싶습니다. 또한 에이전트가 생성된 후 에이전트에 몇 가지 특정 키를 추가하고 싶습니다. systemd를 통해 에이전트를 시작하고 중지할 수 있어야 합니다. 로그아웃하면 ssh-agent 인스턴스가 종료되어야 합니다.

이를 달성하기 위해 시스템 서비스 파일을 어떻게 작성하시겠습니까?

답변1

다음은 나를 위해 일했습니다.

많이 읽고, 다시 읽고, 다시 읽어본 결과 ssh-agent포그라운드에서 실행이 가능하다는 것을 알게 되었고, 그래서 systemd가 이를 관리할 수 있게 되었습니다. 또한 지시문을 무제한으로 추가할 수 있다는 사실을 발견했기 ExecStartPost때문에 이를 통해 에이전트에 특정 키를 추가할 수 있을 것이라고 생각했습니다.

효과는 매우 좋습니다. 유일하게 이상한 점은 서비스를 명시적으로 중지한 후에는 실패 상태가 된다는 것입니다. 더 읽어보니 ssh-agent프로세스가 상태 2로 종료되었으므로 0이 아니므로 SuccessExitStatus2로 설정해야 합니다. 이제 중지되면 해당 상태가 inactive예상대로 표시됩니다.

[Unit]
Description=Project SSH Agent

[Service]
Type=simple
Environment=PROJECT_SSH_AGENT=%t/project-ssh-agent.socket
ExecStart=/usr/bin/ssh-agent -D -a "$PROJECT_SSH_AGENT"
ExecStartPost=echo $SSH_AUTH_SOCK
ExecStartPost=echo $PROJECT_SSH_AGENT
ExecStartPost=/bin/sh -c "SSH_AUTH_SOCK=$PROJECT_SSH_AGENT /usr/bin/ssh-add /home/lpeabody/.ssh/id_rsa.project"
SuccessExitStatus=2

[Install]
WantedBy=default.target

관련 정보