Как заставить GPG использовать консольный режим pinentry для запроса паролей?

С помощью gpg в консоли-среде, такие как SSH сессий не удается, поскольку диалог ГТК pinentry не может быть показано в SSH-сессии.

пробовал unset DISPLAY но это не помогло. Параметры командной строки ГОБ не включайте выключатель заставляя pinentry на консоль-режиме.

более старые версии GPG предлагали текстовое приглашение, которое отлично работало в сеансах SSH, но после обновления оно просто терпит неудачу.

есть --textmode переключатель командной строки, но видимо, он делает что-то еще.

каков был бы правильный и чистый способ получения текстового пин-кода для удаленных сеансов?

24
задан ccpizza
13.05.2023 7:40 Количество просмотров материала 2701
Распечатать страницу

6 ответов

изменить pinentry постоянно, добавьте следующий код ~/.gnupg/gpg-agent.conf:

pinentry-program /usr/bin/pinentry-tty

(в более старых версиях, в которых отсутствует pinentry-tty, используйте pinentry-curses для диалогового окна "полный терминал".)

скажите агенту GPG перезагрузить конфигурацию:

gpg-connect-agent reloadagent /bye
74
отвечен grawity 2023-05-14 15:28

У меня просто была эта проблема на Ubuntu 16.04.3 при попытке сгенерировать / установить закрытый ключ с помощью gpg2 (2.1.11) на системной учетной записи без пароля и на учетной записи пользователя через ssh. Ничего не получалось давая:

gpg: ключ FE17AE6D / FE17AE6D: ошибка при отправке агенту: отказано в разрешении

gpg: ошибка построения массива skey: отказано в разрешении

Я потом нашел этой, который работал для меня, так в кратце:

pico ~/.gnupg/gpg-agent.conf
# add: allow-loopback-pinentry
gpg-connect-agent reloadagent /bye
gpg2 --pinentry-mode loopback --import private.key
5
отвечен racitup 2023-05-14 17:45

чтобы предотвратить всплывающее окно pinentry вы могли ssh localhost. При необходимости принудительное отключение X11,-x Disables X11 forwarding. см. полный пример ниже.

patrick@patrick-C504:~$ ssh localhost
patrick@localhost's password: 
Welcome to Ubuntu 14.04.3 LTS (GNU/Linux 3.13.0-68-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

Last login: Mon Nov 16 22:48:53 2015 from localhost
patrick@patrick-C504:~$ gpg --gen-key
gpg (GnuPG) 1.4.16; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
Your selection? 4
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 
Requested keysize is 2048 bits
Please specify how long the key should be valid.
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years
Key is valid for? (0) 
Key does not expire at all
Is this correct? (y/N) y

You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
    "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"

Real name: Foo
Name must be at least 5 characters long
Real name: FooBar
Email address: foorbar@foo.bar
Comment: 
You selected this USER-ID:
    "FooBar <foorbar@foo.bar>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
You need a Passphrase to protect your secret key.

gpg: gpg-agent is not available in this session
Enter passphrase:
1
отвечен PvdL 2023-05-14 20:02

я скопирую свой ответ из здесь...

смотрим man pinentry-gnome3, Я вижу это:

   pinentry-gnome3  implements  a PIN entry dialog based on GNOME 3, which
   aims to follow the GNOME Human Interface Guidelines as closely as  pos‐
   sible.   If the X Window System is not active then an alternative text-
   mode dialog will be used.  There are other flavors that  implement  PIN
   entry dialogs using other tool kits.

к сожалению, этот запасной вариант текстового режима не работает для меня. Кажется, у других есть тот же вопрос. Однако,комментарий побудило мой попробовать другую программу ввода pin-кода GUI:pinentry-gtk2. Вы можете переключаться следующим образом:

> sudo update-alternatives --config pinentry
There are 3 choices for the alternative pinentry (providing /usr/bin/pinentry).

  Selection    Path                      Priority   Status
------------------------------------------------------------
* 0            /usr/bin/pinentry-gnome3   90        auto mode
  1            /usr/bin/pinentry-curses   50        manual mode
  2            /usr/bin/pinentry-gnome3   90        manual mode
  3            /usr/bin/pinentry-gtk-2    85        manual mode

Press <enter> to keep the current choice[*], or type selection number: 3
update-alternatives: using /usr/bin/pinentry-gtk-2 to provide /usr/bin/pinentry (pinentry) in manual mode

как только я переключил, он работал совершенно для меня! В терминале на рабочий стол, он будет использовать запись пароля GUI,но когда я ssh в моей машине, он будет использовать текстовый режим ввода пароля.

1
отвечен mblythe 2023-05-14 22:19

Если у вас его нет, установите pinentry-curses с yum или apt-get.

затем запустите:

sudo update-alternatives --config pinentry

и выберите pinentry-curses из списка.

1
отвечен Aiden Woodruff 2023-05-15 00:36

Я нашел "полный пример" в ответе PvdL немного запутанным, вот что я делаю:

ssh -X machine
# work hack hack work until I need something from gpg
ssh -x localhost -p$port
gpg2 --decrypt file.gpg
# enter password to pinentry
exit
# now the key is unlocked in gpg-agent, and I can keep decrypting files
# from my X ssh session without being asked for the password
0
отвечен unhammer 2023-05-15 02:53

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх