Как я могу использовать переадресацию агента GPG через ssh, когда systemd владеет удаленными сокетами?

Опция 'noauto' интерпретируется mountкак неявное монтирование записи. Следствием этого является то, что он не будет монтироваться при загрузке систем SysVInit.

Systemd не интерпретирует «автоматически» как означающее, что он не может смонтировать его -по требованию. Systemd интерпретирует «noauto» только как означающее, что это не должно быть зависимостью от local-fs.target, но если это зависимость от чего-то другого, он смонтирует его. Сюда входят fsck, automount и точки монтирования ниже точки монтирования.

Вероятно, либо у вас есть точка монтирования, отличная от noauto, ниже точки монтирования noauto, либо опция x-systemd.automountнаходится в записи fstab.

1
11.03.2021, 16:22
1 ответ

Удалить устаревший файл сокета:

ssh mylinuxserver 'rm /run/user/1001/gnupg/S.gpg-agent'

, а затем подключите:

ssh -vvv mylinuxserver

Предполагается, что вы настроили RemoteForwardв своем ~/.ssh/config. Это будет выглядеть примерно так:

# File: ~/.ssh/config
[...]
Host mylinuxserver
HostName mylinuxserver.example.com 
#RemoteForward <socket_on_remote_box>  <extra_socket_on_local_box>
RemoteForward /run/user/1001/gnupg/S.gpg-agent /Users/rasmus/.gnupg/S.gpg-agent.extra
[...]

В подробном выводе вы должны увидеть что-то вроде:

debug1: remote forward success for: listen /run/user/1001/gnupg/S.gpg-agent:-2, \
   connect /Users/rasmus/.gnupg/S.gpg-agent.extra:-2

После этого использование агента gpg -на удаленной машине должно работать.

Чтобы каждый раз не удалять устаревший файл сокета, добавьте StreamLocalBindUnlink yesк серверу /etc/ssh/sshd_config,как предложено здесь:https://wiki.gnupg.org/AgentForwarding

Примечание для тех, кто пытается заставить это работать в Fedora Linux :Мне нужно было активировать два сокета на моей рабочей станции Fedora Linux, чтобы активация сокетов работала:

systemctl --user enable gpg-agent.socket
systemctl --user enable gpg-agent-extra.socket

Затем gpg-agent.serviceсообщил, что он будет запущен по -требованию этих двух сокетов:

$ systemctl --user status gpg-agent.service
○ gpg-agent.service - GnuPG cryptographic agent and passphrase cache
     Loaded: loaded (/usr/lib/systemd/user/gpg-agent.service; static)
     Active: inactive (dead)
TriggeredBy: ● gpg-agent-extra.socket
             ● gpg-agent.socket
       Docs: man:gpg-agent(1)
0
24.09.2021, 01:01

Теги

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