reprepro 和 gpg-agent - 密码不会被缓存

reprepro 和 gpg-agent - 密码不会被缓存

我在这里有点沮丧,也许你知道问题可能出在哪里:

  • 我有一个构建过程,最后有几个 reprepro 命令
  • 构建脚本使用 sudo 执行

    ( cd "$PUBLISHDIR" && \
    reprepro -Vb . -C untested remove squeeze foobar && \
    reprepro -Vb . -C untested includedeb squeeze ./foobar_*.deb && \
    reprepro -Vb . -C untested list squeeze foobar )
    
  • 我已经设置了 gpg,并且添加了密钥。代理正在运行

    ps lax | grep gpg-agent
    
    1  1002 25345     1  20   0  19284   996 -      Ss   ?          0:00 /usr/bin/gpg-agent --daemon --sh
    
  • 我的 gpg-agent.conf 也已设置

    # ignore-cache-for-signing
    enable-ssh-support
    write-env-file /home/daily/.gnupg/gpg-agent-info
    default-cache-ttl 31536000
    default-cache-ttl-ssh 31536000
    max-cache-ttl 31536000
    max-cache-ttl-ssh 31536000
    debug-all
    
  • 我在 .bashrc 中像这样启动代理

    GNUPGHOME=~/.gnupg
    GPGAGENT=/usr/bin/gpg-agent
    PID_FILE=$GNUPGHOME/gpg-agent-info
    
    if grep -qs '^[[:space:]]*use-agent' "$GNUPGHOME/gpg.conf" "$GNUPGHOME/options" && test -x $GPGAGENT & then
      if [ -r "$PID_FILE" ]; then
        . "$PID_FILE"
        count=`ps lax | grep "/usr/bin/gpg-agent" | grep "$SSH_AGENT_PID" | wc -l`
        if [ $count -eq 0 ]; then
          if ! $GPGAGENT 2>/dev/null; then
            $GPGAGENT --daemon --sh > "$PID_FILE"
            . "$PID_FILE"
            echo "INFO::agent started"
          fi
        else
          echo "INFO::agent already running"
        fi
      fi
    fi
    ssh-add
    

但无论我多久运行一次整个过程,它总是会在 reprepro 的签名过程中询问我密码。我以为代理会缓存这个密码,下次执行时它将被存储并且不再被询问...但它确实要求输入密码...一次又一次...

任何人都可以想到错误或其他原因,也许为什么它总是要求输入密码?

相关内容