--- /dev/null
+;;; Copyright (c) 2026 Jakub Czajka <jakub@ekhem.eu.org>
+;;; License: GPL-3.0 or later.
+
+(define-module (conf vps sshd)
+ #:use-module (gnu services)
+ #:use-module (gnu services ssh)
+ #:use-module (gnu packages ssh)
+ #:export (%openssh-config %ssh-service))
+
+(define %openssh-config
+ (openssh-configuration (openssh openssh-sans-x)
+ (port-number 72)
+ (password-authentication? #f)
+ (accepted-environment '("LANG" "LC_*"))
+ ;; No dedicated fields exist for these directives.
+ (extra-content (string-append "PrintMotd no\n"
+ "ClientAliveInterval 120\n"
+ "ClientAliveCountMax 1\n"
+ "UseDNS no\n"))))
+
+(define %ssh-service
+ (service openssh-service-type %openssh-config))
;;; guix system image --image-type=mbr-raw vps-system.scm
(use-modules (gnu)
- (nongnu packages linux))
+ (nongnu packages linux)
+ (conf vps sshd))
-(use-service-modules networking ssh)
-(use-package-modules ssh)
-
-(define %vps-openssh-config
- (openssh-configuration (openssh openssh-sans-x)
- (port-number 22)
- (password-authentication? #f)
- (permit-root-login 'prohibit-password)))
+(use-service-modules networking)
(operating-system
(host-name "vps")
;; DHCP -- OVH delivers the static IP via DHCP
(service dhcpcd-service-type)
- ;; SSH -- key-only authentication
- (service openssh-service-type %vps-openssh-config)
+ ;; SSH -- configured in conf/vps/sshd.scm
+ %ssh-service
;; NTP -- correct time is required for Guix substitutes
(service ntp-service-type))