]> xenbits.xensource.com Git - libvirt.git/commitdiff
rpc: Pass GPG_TTY and TERM environment variables
authorAndrea Bolognani <abologna@redhat.com>
Thu, 16 Nov 2023 18:12:34 +0000 (19:12 +0100)
committerAndrea Bolognani <abologna@redhat.com>
Mon, 20 Nov 2023 09:18:59 +0000 (10:18 +0100)
gpg-agent can be used instead of ssh-agent to authenticate
against an SSH server, but in order to do so the GPG_TTY and
TERM environment variables need to be passed through.

For obvious reasons, we avoid doing that when no_tty=1 is found
in the connection URI.

https://bugs.debian.org/843863
https://gitlab.com/libvirt/libvirt/-/merge_requests/290

Thanks: Guilhem Moulin <guilhem@guilhem.org>
Thanks: Kunwu Chan <chentao@kylinos.cn>
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
src/rpc/virnetsocket.c

index b58f7a6b8f1eb8c64774238eb02068f86e609e7b..151077c2ddcbc564821ede7b71c7c114277e265c 100644 (file)
@@ -843,6 +843,11 @@ int virNetSocketNewConnectSSH(const char *nodename,
     virCommandAddEnvPass(cmd, "OPENSSL_CONF");
     virCommandAddEnvPass(cmd, "DISPLAY");
     virCommandAddEnvPass(cmd, "XAUTHORITY");
+    if (!noTTY) {
+        /* Needed for gpg-agent's curses-based authentication prompt */
+        virCommandAddEnvPass(cmd, "GPG_TTY");
+        virCommandAddEnvPass(cmd, "TERM");
+    }
     virCommandClearCaps(cmd);
 
     if (service)