Subject: [bug#32264] openssh forwarding options

From: Eric Brown <[email-masked]>
Date: Tue, 24 Jul 2018 17:54:32 -0500

Please find attached a patch that enables the configuration of some of
openssh's forwarding options.

These changes are based off of the existing x11-forwarding? option that
already exists in ssh.scm.

Also, I have added some documentation for these options.

>From f2c0c2387b2dcc4ce092c31a5a024565e4adbb50 Mon Sep 17 00:00:00 2001
From: Eric Brown <[email-masked]>
Date: Tue, 24 Jul 2018 16:19:40 -0500
Subject: [PATCH] gnu: services: Add forwarding options to openssh.

* gnu/services/ssh.scm (openssh): Add forwarding options to openssh.
---
 doc/guix.texi        |  9 +++++++++
 gnu/services/ssh.scm | 22 ++++++++++++++++++++++
 2 files changed, 31 insertions(+)

diff --git a/doc/guix.texi b/doc/guix.texi
index 84347d156..0341ea29f 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -11634,6 +11634,15 @@ When true, forwarding of X11 graphical client connections is
 enabled---in other words, @command{ssh} options @option{-X} and
 @option{-Y} will work.
 
+@item @code{allow-agent-forwarding?} (default: @code{#t})
+Whether to allow agent forwarding.
+
+@item @code{allow-tcp-forwarding?} (default: @code{#t})
+Whether to allow TCP forwarding.
+
+@item @code{gateway-ports?} (default: @code{#f})
+Whether to allow gateway ports.
+
 @item @code{challenge-response-authentication?} (default: @code{#f})
 Specifies whether challenge response authentication is allowed (e.g. via
 PAM).
diff --git a/gnu/services/ssh.scm b/gnu/services/ssh.scm
index f158fdf01..dd96ad6ae 100644
--- a/gnu/services/ssh.scm
+++ b/gnu/services/ssh.scm
@@ -289,6 +289,19 @@ The other options should be self-descriptive."
   ;; Boolean
   (x11-forwarding?       openssh-configuration-x11-forwarding?
                          (default #f))
+
+  ;; Boolean
+  (allow-agent-forwarding? openssh-configuration-allow-agent-forwarding?
+                           (default #t))
+
+  ;; Boolean
+  (allow-tcp-forwarding? openssh-configuration-allow-tcp-forwarding?
+                         (default #t))
+
+  ;; Boolean
+  (gateway-ports? openssh-configuration-gateway-ports?
+                         (default #f))
+
   ;; Boolean
   (challenge-response-authentication? openssh-challenge-response-authentication?
                                       (default #f))
@@ -418,6 +431,15 @@ of user-name/file-like tuples."
            (format port "X11Forwarding ~a\n"
                    #$(if (openssh-configuration-x11-forwarding? config)
                          "yes" "no"))
+           (format port "AllowAgentForwarding ~a\n"
+                   #$(if (openssh-configuration-allow-agent-forwarding? config)
+                         "yes" "no"))
+           (format port "AllowTcpForwarding ~a\n"
+                   #$(if (openssh-configuration-allow-tcp-forwarding? config)
+                         "yes" "no"))
+           (format port "GatewayPorts ~a\n"
+                   #$(if (openssh-configuration-gateway-ports? config)
+                         "yes" "no"))
            (format port "PidFile ~a\n"
                    #$(openssh-configuration-pid-file config))
            (format port "ChallengeResponseAuthentication ~a\n"
-- 
2.18.0