summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2020-12-07 12:34:26 +0100
committerLudovic Courtès <ludo@gnu.org>2020-12-07 12:48:26 +0100
commitaecd2a13cbd8301d0fdeafcacbf69e12cc3f6138 (patch)
treecc3a867cf3a9af91e15810fb3663f145acfed35f
parent859b362f81598830d7ff276b96a8724aee3c4db7 (diff)
downloadguix-aecd2a13cbd8301d0fdeafcacbf69e12cc3f6138.tar.gz
services: openssh: Warn about 'password-authentication?' default.
Fixes <https://bugs.gnu.org/44808>.
Reported by Christopher Lemmer Webber <cwebber@dustycloud.org>.

* gnu/services/ssh.scm (true-but-soon-false): New procedure.
(<openssh-configuration>)[password-authentication?]: Change default to
'true-but-soon-false'.
* gnu/installer/services.scm (%system-services): Explicitly set
'password-authentication?' to #f.
-rw-r--r--gnu/installer/services.scm8
-rw-r--r--gnu/services/ssh.scm18
2 files changed, 22 insertions, 4 deletions
diff --git a/gnu/installer/services.scm b/gnu/installer/services.scm
index ec5ea30594..14a3bb9be6 100644
--- a/gnu/installer/services.scm
+++ b/gnu/installer/services.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
-;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -93,7 +93,11 @@
      (system-service
       (name (G_ "OpenSSH secure shell daemon (sshd)"))
       (type 'networking)
-      (snippet '((service openssh-service-type))))
+      (snippet '((service openssh-service-type
+                          (openssh-configuration
+                           ;; Currently the default is #t but it's considered
+                           ;; unsafe.  Explicitly pass #f.
+                           (password-authentication? #f))))))
      (system-service
       (name (G_ "Tor anonymous network router"))
       (type 'networking)
diff --git a/gnu/services/ssh.scm b/gnu/services/ssh.scm
index 1891db0487..1e45495e1b 100644
--- a/gnu/services/ssh.scm
+++ b/gnu/services/ssh.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2016 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
@@ -33,6 +33,9 @@
   #:use-module (guix gexp)
   #:use-module (guix records)
   #:use-module (guix modules)
+  #:use-module ((guix i18n) #:select (G_))
+  #:use-module ((guix diagnostics) #:select (warning source-properties->location))
+  #:use-module ((guix memoization) #:select (mlambda))
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-26)
   #:use-module (ice-9 match)
@@ -276,6 +279,16 @@ The other options should be self-descriptive."
 ;;; OpenSSH.
 ;;;
 
+(define true-but-soon-false
+  (mlambda (loc)
+    ;; The plan is to change the default 'password-authentication?' to #f in
+    ;; Guix 1.3.0 or so.  See <https://issues.guix.gnu.org/44808>.
+    (warning (source-properties->location loc)
+             (G_ "The default value of the 'password-authentication?'
+field of 'openssh-configuration' will change from #true to #false in the
+future.  Explicitly set it to #true to allow password authentication.~%"))
+    #t))
+
 (define-record-type* <openssh-configuration>
   openssh-configuration make-openssh-configuration
   openssh-configuration?
@@ -296,7 +309,8 @@ The other options should be self-descriptive."
                           (default #f))
   ;; Boolean
   (password-authentication? openssh-configuration-password-authentication?
-                            (default #t))
+                            (default (true-but-soon-false
+                                      (current-source-location))))
   ;; Boolean
   (public-key-authentication? openssh-configuration-public-key-authentication?
                               (default #t))