Переадресация gpg-agent: неподходящий ioctl для устройства
Я пытаюсь настроить переадресацию gpg-agent для использования pass ( https://www.passwordstore.org/) через ssh.
gpg версии 2.2.9 как на локальных, так и на удаленных хостах, устанавливается по инструкции: https://gist.github.com/vt0r/a2f8c0bcb1400131ff51
На локальной машине
$HOME/.gnupg/ GPG-agent.confextra-socket /home/mickey/.gnupg/S.gpg-agent.remote
echo RELOADAGENT | gpg-connect-agent
gpg --export -a mickey > mickey.gpg
echo "test" | gpg2 --encrypt -r mickey > out.gpg
scp *.gpg REMOTE_HOST:
ssh -R /run/user/1002/gnupg/S.gpg-agent:/home/mickey/.gnupg/S.gpg-agent.remote -o "StreamLocalBindUnlink=yes" REMOTE_HOST
На удаленной машине
Импортировать открытый ключgpg --import mickey.gpg
gpg --edit-key mickey
trust 5 quit
gpg --decrypt -v out.gpg
gpg: public key is FED6243A3325C554
gpg: connection to agent is in restricted mode
gpg: using subkey FED6243A3325C554 instead of primary key 9E2ED69A02554504
gpg: using subkey FED6243A3325C554 instead of primary key 9E2ED69A02554504
gpg: encrypted with 2048-bit RSA key, ID FED6243A3325C554, created 2018-07-23
"mickey"
gpg: public key decryption failed: Inappropriate ioctl for device
gpg: decryption failed: No secret key
Итак, переадресация сокетов агентов работает, кажется, есть некоторые проблемы с программой pinentry. Не могу найти ничего, что работает для меня в Google.
UPD
Пытался добавить pinentry-program /usr/bin/pinentry-tty
в gpg-agent.conf, новая ошибка:
gpg: public key decryption failed: Invalid IPC response
gpg: decryption failed: No secret key
3 ответа
Это происходит, когда GPG не понимает, откуда читать входные данные. Простая настройка для поиска ввода от tty (терминал, подключенный к стандартному входу) исправляет это:
export GPG_TTY=$(tty)
Этот метод не работает, когда вы находитесь внутри контейнера LXC. Вместо этого добавьте это в~/.gnupg/gpg.conf
:
use-agent
pinentry-mode loopback
Затем добавьте это в ~/.gnupg/gpg-agent.conf
allow-loopback-pinentry
Затем перезапустите агент с помощью echo RELOADAGENT | gpg-connect-agent
.
( источник)
При запуске gpg из сценария необходимо указать аргумент --batch.