Here is my set up:

  • Windows 10 machine, my desktop PC.
  • Ubuntu 18 machine, this is my home server
  • Yubikey, has my private GPG keys on it

My work flow is as follows:

  1. Plug in my Yubikey into USB port on my Windows 10 machine.
  2. From my Windows 10 machine, SSH into my Ubuntu machine using Putty.
  3. On the Ubuntu machine through Putty, use Git to commit some changes to a repository cloned on the ubuntu machine.
  4. Need to sign those commits on the ubuntu machine using the private keys located on my Yubikey, which is plugged into my Windows 10 machine.

I can sign commits on my Windows 10 machine directly, because I launch gpg-agent using Gpg4Win, and it detects my USB key and prompts me to enter the PIN before I sign/encrypt anything. I want the same thing to happen when I try to sign commits in Git on the Ubuntu machine. So in a way, I'd like the existing SSH connection between my Ubuntu and Windows machine to serve as a proxy to the gpg-agent on my Windows machine, so that encryption happens on my Windows machine when invoked from Ubuntu.

I'm not sure if this is possible. The GPG agent forwarding help I find online seems to be the reverse of this: A host machine delegating encryption to a remote machine. But this is not what I'm doing, since I do not plug the yubikey into my Ubuntu server machine.

To further complicate this, these are not 2 linux machines interacting but a Windows and Linux machine. So I'm not sure if Gpg4Win being in the mix makes this harder or even impossible.

How can I sign git commits on the Ubuntu machine, using the private keys available on the Windows machine?


You must log in to answer this question.

Browse other questions tagged .