gpg/pinentry -Невозможно ввести кодовую фразу за пределами терминала

Тот же подход, что и в ответе Стивена Китта , но без дополнительной seqпеременной. Вместо этого порядковый «номер» используется, чтобы определить, принадлежит ли текущая строка к набору, который мы ищем.

awk '{
  if ($1=="TYR") {
    i=$2 # remember index
  }
  else if (i!=0) { 
    if ($2==i+1 && $1=="LYS" || $2==i+2 && $1=="SER" || $2==i+3 && $1=="ALA") {
      if ($2==i+3) { # are we there yet?
        print i; exit
      }
    }
    else {
      i=0 # nope, reset index
    }
  }
}' file

(Ненужные фигурные скобки и отступ оставлены для удобства чтения)

1
06.11.2020, 14:00
1 ответ

Я могу помочь вам найти решение, предполагая использование gpg2, но с оговоркой, что я не претендую на безопасность и т. д.

Предварительно -создайте терминал, зарезервированный для ввода паролей. В нем дайте две команды:

tty
gpg-agent --pinentry-program /usr/bin/pinentry-curses --daemon sleep 999999

Это напечатает используемый pty, скажем, /dev/pts/10, а затем запустит агент gpg, который будет "зависать" в sleep, так что в этом терминале больше не будет выполняться чтение.

Когда вам нужно что-то расшифровать в какой-то другой оболочке, сначала установите ее окружение с помощью:

export GPG_TTY=/dev/pts/10 
export GPG_AGENT_INFO=/run/user/1000/gnupg/S.gpg-agent:0:1

где 1000 — ваш идентификатор пользователя. (Вы можете получить имя этого сокета, запустив gpg-agentс опцией -v. Я уверен, что есть более чистый способ получить его.)

Обратите внимание на :0:1, добавленное в конце информации; это действительно должен быть pid агента и версия протокола, но 0, похоже, принимается. (Если сокет не находится по указанному выше пути, возможно, вы не используете gpg2или в ваших конфигурационных файлах установлены некоторые параметры ).

Теперь вы должны также добавить параметр --use-agentв команду gpgрасшифровки. Это должно вызвать появление curses-версии программы pinentry в предварительно созданном -терминале, где теперь вы можете ввести пароль.

0
18.03.2021, 22:51

Теги

Похожие вопросы