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