Fix systemd-ssh changes (#390565)
This commit is contained in:
@@ -595,7 +595,6 @@ in
|
||||
environment.LD_LIBRARY_PATH = nssModulesPath;
|
||||
|
||||
serviceConfig = {
|
||||
Type = "notify";
|
||||
ExecStart = lib.concatStringsSep " " [
|
||||
"-${lib.getExe' cfg.package "sshd"}"
|
||||
"-i"
|
||||
@@ -620,7 +619,6 @@ in
|
||||
restartTriggers = [ config.environment.etc."ssh/sshd_config".source ];
|
||||
|
||||
serviceConfig = {
|
||||
Type = "notify";
|
||||
Restart = "always";
|
||||
ExecStart = lib.concatStringsSep " " [
|
||||
(lib.getExe' cfg.package "sshd")
|
||||
|
||||
@@ -274,5 +274,8 @@ in {
|
||||
"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'")
|
||||
'';
|
||||
})
|
||||
|
||||
@@ -6,29 +6,12 @@
|
||||
}:
|
||||
# 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";
|
||||
@@ -46,24 +29,28 @@ in
|
||||
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")
|
||||
|
||||
Reference in New Issue
Block a user