Saya mengalami masalah menggunakan agen gpg melalui ssh melalui baris perintah tunggal.
Ini konfigurasi saya:
Server A: memicu perintah melalui ssh.
ssh user@serverB "sudo -E /path/to/script.sh"
Server B: Menjalankan skrip yang membutuhkan tanda tangan frasa sandi.
Info sistem: Ubuntu 12.04
Saya telah menyiapkan gpg-agent di server B, saya telah menambahkan konfigurasi ini ke /home/user/.bashrc:
Invoke GnuPG-Agent the first time we login.
# Does `~/.gpg-agent-info' exist and points to gpg-agent process accepting signals?
if test -f $HOME/.gpg-agent-info && \
kill -0 `cut -d: -f 2 $HOME/.gpg-agent-info` 2>/dev/null; then
GPG_AGENT_INFO=`cat $HOME/.gpg-agent-info | cut -c 16-`
else
# No, gpg-agent not available; start gpg-agent
eval `gpg-agent --daemon --write-env-file $HOME/.gpg-agent-info`
fi
export GPG_TTY=`tty`
export GPG_AGENT_INFO
Berikut adalah konfigurasi agen di /home/user/.gnupg/gpg-agent.conf:
enable-ssh-support
#1 year cache support
default-cache-ttl 31536000
default-cache-ttl-ssh 31536000
max-cache-ttl 31536000
max-cache-ttl-ssh 31536000
#debug-all
Jadi untuk membuat ini berfungsi, saya terhubung ke serverB melalui ssh:
ssh user@serverB
Agen gpg dimulai, saya memicu skrip secara manual:
sudo -E /path/to/script.sh
Kemudian, agen gpg meminta saya meminta frasa sandi, setelah saya mengatur frasa sandi, saya dapat menjalankan skrip lagi, dan ia melakukan tugasnya tanpa meminta passhrase.
Masalah saya adalah, ketika saya mencoba memicunya dari kejauhan, misalnya melalui:
ssh user@serverB "sudo -E /path/to/script.sh"
Tampaknya agen gpg tidak berfungsi, karena skrip terus meminta saya untuk frasa sandi.
Edit:
Saya telah menambahkan konten berikut ke /etc/sudoers.d/user untuk memicu skrip dari kejauhan tanpa kata sandi sudo dan untuk menjaga variabel lingkungan:
user ALL=(ALL)NOPASSWD:SETENV:/path/to/script.sh
Ada ide?
sudo
perintah.