Debian 上的 GPG 密钥转发



我正在尝试使用我的 openpgp 卡中的私钥从我的 Debian 笔记本电脑到 RPi。我遵循了在谷歌上找到的不同提示,特别是:

  • ~/.gnupg/gpg-agent.conf中的额外插座
  • 在建立这个额外的套接字
  • 时再次删除它,这个额外的套接字已经在/run/user/<uid>/gnupg
  • 中创建
  • 使用~/.ssh/config转发此套接字

Host homegear HostName homegear RemoteForward ~/.gnupg/S.gpg-agent /run/user/1000/gnupg/S.gpg-agent.extra

  • 更改了 RemoteForward 行中两个套接字的顺序,因为我总是混淆哪个应该是第一个
  • 将以下内容添加到 RPi 的/etc/ssh/sshd_config

StreamLocalBindUnlink yes

  • 在笔记本电脑上重新加载 GPG 代理
  • 打开与 RPi 的新 SSH 连接

但我总是得到

Warning: remote port forwarding failed for listen path ~/.gnupg/S.gpg-agent

连接到 RPi 时。

笔记本电脑和 RPi 上的openssh是 7.4(Debian Stretch),gpg是 2.1.18。 转发代理连接以用作 ssh 私钥(用于从 RPi 连接到 gitlab)工作得很好,转发 gpg 私钥(用于签名提交)则不然。我现在有点无奈。有什么明显的问题吗?还是转发 unix 域套接字仍然存在问题,我需要使用 socat 解决方法?

谢谢!

除了运行 10.14.2 和 GPG 2.2.11 的两台 Mac 之间,我遇到了完全相同的问题,我能够让它工作的唯一方法是指定两端套接字的绝对路径。 :(远程或本地套接字的相对路径都以各种方式失败,如果您在不同的计算机上作为不同的用户名进行连接,这会有点痛苦。

我能够通过在我的~/.ssh/config中指定许多不同的Match exec块来解决这个问题:

# Source machine is a personal Mac, connecting to another personal Mac on my local network
Match exec "hostname | grep -F .core" Host *.core
RemoteForward /Users/virtualwolf/.gnupg/S.gpg-agent /Users/virtualwolf/.gnupg/S.gpg-agent.extra
# Source machine is a personal Mac, connecting to my Linux box
Match exec "hostname | grep -F .core" Host <name of the host block for my Linux box>
RemoteForward /home/virtualwolf/.gnupg/S.gpg-agent /Users/virtualwolf/.gnupg/S.gpg-agent.extra
# Source machine is my work Mac, connecting to my Linux box
Match exec "hostname | grep -F <work machine name>" Host <name of the host block for my Linux box>
RemoteForward /home/virtualwolf/.gnupg/S.gpg-agent /Users/<work username>/.gnupg/S.gpg-agent.extra

(SSH位取自这个答案)。

最新更新