nixos/tests/systemd-initrd-networkd-ssh: Test with backdoor not LUKS

Changed files
+13 -39
nixos
+13 -39
nixos/tests/systemd-initrd-networkd-ssh.nix
···
nodes = {
server = { config, pkgs, ... }: {
-
environment.systemPackages = [ pkgs.cryptsetup ];
-
boot.loader.systemd-boot.enable = true;
-
boot.loader.timeout = 0;
-
virtualisation = {
-
emptyDiskImages = [ 4096 ];
-
useBootLoader = true;
-
# Booting off the encrypted disk requires an available init script from
-
# the Nix store
-
mountHostNixStore = true;
-
useEFIBoot = true;
-
};
-
-
specialisation.encrypted-root.configuration = {
-
virtualisation.rootDevice = "/dev/mapper/root";
-
virtualisation.fileSystems."/".autoFormat = true;
-
boot.initrd.luks.devices = lib.mkVMOverride {
-
root.device = "/dev/vdb";
-
};
-
boot.initrd.systemd.enable = true;
-
boot.initrd.network = {
+
testing.initrdBackdoor = true;
+
boot.initrd.systemd.enable = true;
+
boot.initrd.systemd.contents."/etc/msg".text = "foo";
+
boot.initrd.network = {
+
enable = true;
+
ssh = {
enable = true;
-
ssh = {
-
enable = true;
-
authorizedKeys = [ (lib.readFile ./initrd-network-ssh/id_ed25519.pub) ];
-
port = 22;
-
# Terrible hack so it works with useBootLoader
-
hostKeys = [ { outPath = "${./initrd-network-ssh/ssh_host_ed25519_key}"; } ];
-
};
+
authorizedKeys = [ (lib.readFile ./initrd-network-ssh/id_ed25519.pub) ];
+
port = 22;
+
hostKeys = [ ./initrd-network-ssh/ssh_host_ed25519_key ];
};
};
};
···
status, _ = client.execute("nc -z server 22")
return status == 0
-
server.wait_for_unit("multi-user.target")
-
server.succeed(
-
"echo somepass | cryptsetup luksFormat --type=luks2 /dev/vdb",
-
"bootctl set-default nixos-generation-1-specialisation-encrypted-root.conf",
-
"sync",
-
)
-
server.shutdown()
-
server.start()
-
client.wait_for_unit("network.target")
with client.nested("waiting for SSH server to come up"):
retry(ssh_is_up)
-
client.succeed(
-
"echo somepass | ssh -i /etc/sshKey -o UserKnownHostsFile=/etc/knownHosts server 'systemd-tty-ask-password-agent' & exit"
+
msg = client.succeed(
+
"ssh -i /etc/sshKey -o UserKnownHostsFile=/etc/knownHosts server 'cat /etc/msg'"
)
+
assert "foo" in msg
+
server.switch_root()
server.wait_for_unit("multi-user.target")
-
server.succeed("mount | grep '/dev/mapper/root on /'")
'';
})