Debian上的GPG密钥转发

时间:2018-04-06 19:30:51

标签: ssh debian smartcard gnupg openpgp

我试图使用我的Debian笔记本电脑上的openpgp卡中的私钥到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-agent
  • 打开与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解决方法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

我遇到了完全相同的问题,除了两台运行10.14.2和GPG 2.2.11的Mac之间,我唯一能使它工作的方法是在都结束。 :(具有用于远程套接字或本地套接字的相对路径都以各种方式失败,如果在各种计算机上以不同的用户名进行连接,这会很麻烦。

我可以通过在Match exec中指定多个不同的~/.ssh/config块来解决此问题:

# 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位来自this answer)。