nix-config/nixos/viridian/services/ssh/default.nix
jasmine 8874c88fbc
fix(ssh): enable key-based root login and use FQDNs for system services
Fixes backup system authentication and hostname resolution issues.

Changes:
- Change PermitRootLogin from "no" to "prohibit-password" in global SSH config
  (allows key-based root login for host-to-host backups while blocking passwords)
- Update fuchsia onsite backup to use viridian.home.arpa FQDN instead of shortname
- Update SSH knownHosts to use FQDNs (fuchsia.home.arpa, viridian.home.arpa)
  (system-level config uses FQDNs, user shortcuts remain in home-manager)

This enables the complete 3-2-1 backup strategy with automated backups working
correctly between fuchsia and viridian, and fuchsia to BorgBase.
2025-10-07 23:11:31 +08:00

29 lines
984 B
Nix

{inputs, ...}: let
# Fuchsia's host key for backup authentication
fuchsiaHostKey = builtins.readFile (
"${inputs.self}/nixos/fuchsia/ssh_host_ed25519_key.pub"
);
in {
# Trust fuchsia's host keys for SSH connections (system-level, uses FQDN)
programs.ssh.knownHosts = {
"fuchsia-ed25519" = {
hostNames = ["fuchsia.home.arpa"];
publicKeyFile = "${inputs.self}/nixos/fuchsia/ssh_host_ed25519_key.pub";
};
"fuchsia-rsa" = {
hostNames = ["fuchsia.home.arpa"];
publicKeyFile = "${inputs.self}/nixos/fuchsia/ssh_host_rsa_key.pub";
};
};
# Trust BorgBase repository (offsite backup target)
programs.ssh.knownHostsFiles = [
./borgbase_hosts
];
# Accept remote backups from fuchsia using host key authentication
users.users.root.openssh.authorizedKeys.keys = [
# Restrict fuchsia to only run borg serve in /srv/borg-repo
''command="borg serve --restrict-to-path /srv/borg-repo",restrict ${fuchsiaHostKey}''
];
}