git-секрет: gpg: [не знаю]: недопустима частичная длина для пакета типа 20 в задании gitlab ci

# #gitlab-ci #gnupg #git-secret

Вопрос:

У меня проблемы с секретом git в заданиях gitlab ci.

Что я сделал:

  1. инициализация, добавление пользователей, добавление файлов, их скрытие с помощью git secret
  2. создайте задание, в котором я хочу раскрыть файлы:
 git secret:  stage: init  before_script:  - sh -c "echo 'deb https://gitsecret.jfrog.io/artifactory/git-secret-deb git-secret main' gt;gt; /etc/apt/sources.list"  - wget -qO - 'https://gitsecret.jfrog.io/artifactory/api/gpg/key/public' | apt-key add -  - apt-get update amp;amp; apt-get install -y git-secret  script:  - echo $GPG_PRIVATE_KEY | tr ',' 'n' gt; ./pkey.gpg  - export GPG_TTY=$(tty)  - gpg --batch --import ./pkey.gpg  - git secret reveal -p ${GPG_PASSPHRASE}  

Журналы результатов:

 ... $ gpg --batch --import ./pkey.gpg gpg: directory '/root/.gnupg' created gpg: keybox '/root/.gnupg/pubring.kbx' created gpg: /root/.gnupg/trustdb.gpg: trustdb created gpg: key SOMEKEY: public key "Email Name lt;ci@email.comgt;" imported gpg: key SOMEKEY: secret key imported gpg: Total number processed: 1 gpg: imported: 1 gpg: secret keys read: 1 gpg: secret keys imported: 1 $ git secret reveal -p ${GPG_PASSPHRASE} gpg: [don't know]: partial length invalid for packet type 20 git-secret: abort: problem decrypting file with gpg: exit code 2: /path/to/decrypted/file  

Я не понимаю, в чем проблема. Что это значит packet type 20 ? А длина чего? Локально это оказалось нормально. Команда git secret whoknows показывает, что электронная почта на ci env может расшифровываться. Кодовая фраза проверена и передана на задание.

Ответ №1:

Это распространенная проблема с форматом ключей.

Поскольку вы используете CI GitLab, вы должны использовать преимущество типа файла в переменных CI/CD вместо сохранения значения ключа GPG в качестве типа переменной.

Прежде всего, забудьте о создании брони в одной линии с помощью конвейера | tr 'n' ',' и получите надлежащую многострочную броню.

Во-вторых, добавьте его в свои переменные CI GitLab с типом «Файл», добавьте пустую строку в конце, а затем удалите ее (это кажется глупым, но избавит вас от головной боли, так как, похоже, возникает проблема при копировании непосредственно из оболочки в текстовое поле в GitLab).

введите описание изображения здесь

В-третьих, импортируйте непосредственно файл в свою связку ключей:

 gpg --batch --import $GPG_PRIVATE_KEY  

Ответ №2:

Для меня проблема заключалась в том, что версии GnuPG различались между машиной шифрования (версия 2.0) и стороной расшифровки (версия 2.0).

После того, как я понизил его до версии 2.0 (из-за того, что версия 2.0 3 еще не была доступна в Debian), проблема исчезла.