Fix systemd-ssh changes (#390565)

Changed files
+17 -29
nixos
modules
services
networking
ssh
tests
-2
nixos/modules/services/networking/ssh/sshd.nix
···
environment.LD_LIBRARY_PATH = nssModulesPath;
serviceConfig = {
-
Type = "notify";
ExecStart = lib.concatStringsSep " " [
"-${lib.getExe' cfg.package "sshd"}"
"-i"
···
restartTriggers = [ config.environment.etc."ssh/sshd_config".source ];
serviceConfig = {
-
Type = "notify";
Restart = "always";
ExecStart = lib.concatStringsSep " " [
(lib.getExe' cfg.package "sshd")
+3
nixos/tests/openssh.nix
···
"ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i privkey.snakeoil server-no-pam true",
timeout=30
)
+
+
# None of the per-connection units should have failed.
+
server_lazy.fail("systemctl is-failed 'sshd@*.service'")
'';
})
+14 -27
nixos/tests/systemd-ssh-proxy.nix
···
}:
# This tests that systemd-ssh-proxy and systemd-ssh-generator work correctly with:
# - a local unix socket on the same system
-
# - a vsock socket inside a vm
+
# - a unix socket inside a container
let
inherit (import ./ssh-keys.nix pkgs)
snakeOilEd25519PrivateKey
snakeOilEd25519PublicKey
;
-
qemu = config.nodes.virthost.virtualisation.qemu.package;
-
iso =
-
(import ../lib/eval-config.nix {
-
inherit (pkgs.stdenv.hostPlatform) system;
-
modules = [
-
../modules/installer/cd-dvd/iso-image.nix
-
{
-
services.openssh = {
-
enable = true;
-
settings.PermitRootLogin = "prohibit-password";
-
};
-
isoImage.isoBaseName = lib.mkForce "nixos";
-
isoImage.makeBiosBootable = true;
-
system.stateVersion = lib.trivial.release;
-
}
-
];
-
}).config.system.build.isoImage;
in
{
name = "systemd-ssh-proxy";
···
isNormalUser = true;
};
};
-
systemd.services.test-vm = {
-
script = "${lib.getExe qemu} --nographic -smp 1 -m 512 -cdrom ${iso}/iso/nixos.iso -device vhost-vsock-pci,guest-cid=3 -smbios type=11,value=\"io.systemd.credential:ssh.authorized_keys.root=${snakeOilEd25519PublicKey}\"";
+
containers.guest = {
+
autoStart = true;
+
config = {
+
users.users.root.openssh.authorizedKeys.keys = [ snakeOilEd25519PublicKey ];
+
services.openssh = {
+
enable = true;
+
settings.PermitRootLogin = "prohibit-password";
+
};
+
system.stateVersion = lib.trivial.release;
+
};
};
};
};
testScript = ''
-
virthost.systemctl("start test-vm.service")
-
virthost.succeed("mkdir -p ~/.ssh")
virthost.succeed("cp '${snakeOilEd25519PrivateKey}' ~/.ssh/id_ed25519")
virthost.succeed("chmod 600 ~/.ssh/id_ed25519")
-
with subtest("ssh into a vm with vsock"):
-
virthost.wait_until_succeeds("systemctl is-active test-vm.service")
-
virthost.wait_until_succeeds("ssh -i ~/.ssh/id_ed25519 vsock/3 echo meow | grep meow")
-
virthost.wait_until_succeeds("ssh -i ~/.ssh/id_ed25519 vsock/3 shutdown now")
-
virthost.wait_until_succeeds("! systemctl is-active test-vm.service")
+
with subtest("ssh into a container with AF_UNIX"):
+
virthost.wait_for_unit("container@guest.service")
+
virthost.wait_until_succeeds("ssh -i ~/.ssh/id_ed25519 unix/run/systemd/nspawn/unix-export/guest/ssh echo meow | grep meow")
with subtest("elevate permissions using local ssh socket"):
virthost.wait_for_unit("sshd-unix-local.socket")