systemd 스크립트에서 gpg 실행

systemd 스크립트에서 gpg 실행

에 대한 래퍼를 작성했습니다 rsync. 그것은 내 호스트에 연결하고 $HOME인증 에 ssh사용합니다 . 내 스크립트는 터미널 에뮬레이터에서 호출될 때 작동합니다. 내 pinentry 프로그램을 사용하여 내 gpg 키의 비밀번호를 묻는 메시지를 표시한 다음 .gpg-agentsshssh

이제 시작할 때마다 이를 호출하고 싶습니다. 나는 보통 systemd이것을 사용합니다. 다음을 추가했습니다 $HOME/.config/systemd/user/backup.service.

[Unit]
Description=Back up user files on startup
After=multi-user.target

[Service]
Type=oneshot
Requires=network-online.target
RemainAfterExit=false
ExecStart=/bin/backup.sh

[Install]
WantedBy=default.target

를 통해 활성화합니다 systemctl --user enable backup.service.

스크립트가 실행되고 모든 로컬 부분(로그 파일 읽기/쓰기)이 작동합니다. 단, ssh이용 이나 전화로 pass연결하는 것은 gpg불가능합니다. 비밀번호를 묻는 메시지가 전혀 표시되지 않기 때문입니다.

시작하는 gpg-agent동안 스크립트에서 호출되면 어떻게 작동합니까 ?systemd

최소한의 예 backup.sh:

#!/bin/bash
ssh [email protected]

gpg-agent.conf:

pinentry-program /usr/bin/pinentry-gnome3
enable-ssh-support
default-cache-ttl 86400
default-cache-ttl-ssh 86400
max-cache-ttl 86400
max-cache-ttl-ssh 86400

.zshrc:

GPG_TTY=$(tty)
export GPG_TTY
unset SSH_AGENT_PID
if [ "${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ]; then
  export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
fi
gpgconf --launch gpg-agent

관련 정보