1

对于我的 SolydXK 存储库,我想添加一些在 Debian 拉伸反向端口中可用的软件包。

我已经成功设置了 conf/distributions、conf/updates 和 FilterList 文件,以下命令在登录到服务器后成功运行:

reprepro -b /path_to_repository_basedir update

将文件添加到存储库时,我必须正确填写我的 gpg 密码来对文件进行签名。在会议期间,我只需要这样做一次。

现在,我尝试通过创建从我的 .bash_profile 调用的脚本来使签名无人参与:

#!/bin/sh

OURKEY=ABCDEFGH
PASSPHRASE=my_passphrase
PIDOF=`pidof gpg-agent`
RETVAL=$?

# Decide wether to start gpg-agent daemon.
if [ "$RETVAL" -eq 1 ]; then
       echo "Starting gpg-agent daemon."
        eval `gpg-agent --allow-preset-passphrase --allow-mark-trusted --default-cache-ttl-ssh 4294967295 --default-cache-ttl 4294967295 --max-cache-ttl 4294967295 --daemon --enable-ssh-support --write-env-file "${HOME}/.gpg-agent-info"`
else
       echo "Daemon gpg-agent already running."
fi


if [ -f "${HOME}/.gpg-agent-info" ]; then
  . "${HOME}/.gpg-agent-info"
  export GPG_AGENT_INFO
  export SSH_AUTH_SOCK
  export SSH_AGENT_PID
  # Create necessary symbolic link
  cp -fs `echo $GPG_AGENT_INFO | cut -d':' -f 1` "${HOME}/.gnupg/"
fi

# Default trust our own key
rm ~/.gnupg/trustlist.txt
for FP in $(gpg2 --fingerprint --with-colons --fingerprint $OURKEY | grep ^fpr | cut -d':' -f 10); do
  echo "$FP S" >> ~/.gnupg/trustlist.txt
  echo $PASSPHRASE | /usr/lib/gnupg2/gpg-preset-passphrase --preset $FP
done

# Set GPG TTY
export GPG_TTY=$(tty)

我检查了指纹(又名 keygrip,但这个版本的 gpgsm 不知道 --with-keygrip 选项),一切似乎都很好。但是,当 cron 作业运行上述更新命令时,会出现一条错误消息,指出密码不正确。

服务器在 Debian old-squeeze 上运行(我知道,我必须对此做一些事情,但这是另一个问题),这可能是一个大问题。这是一些版本信息:

cat /etc/debian_version
6.0.10

uname -r
3.14.52-vs2.3.6.15-1

gpg (GnuPG) 1.4.10
gpg (GnuPG) 2.0.14
gpgsm (GnuPG) 2.0.14
gpg-agent (GnuPG) 2.0.14

那么,这里有没有人在无人看管的情况下使用 gpg-agent 签署包的经验并且可以向我解释我做错了什么?

4

0 回答 0