sombrero: Add agenix module and use it for pinwheel ssh key

This commit is contained in:
Alexander Heldt
2023-10-24 21:18:47 +02:00
parent 4d078f206f
commit c4cb29014d
16 changed files with 88 additions and 15 deletions

View File

@@ -52,6 +52,7 @@
specialArgs = { inherit inputs; }; specialArgs = { inherit inputs; };
modules = [ modules = [
./hosts/sombrero/configuration.nix ./hosts/sombrero/configuration.nix
inputs.agenix.nixosModules.default
inputs.home-manager.nixosModules.home-manager inputs.home-manager.nixosModules.home-manager
./hosts/sombrero/home.nix ./hosts/sombrero/home.nix
]; ];

View File

@@ -61,12 +61,14 @@
isNormalUser = true; isNormalUser = true;
hashedPassword = "$6$3mkwaUWd8NA6XuEb$x80tETKGz6FEG.kej3v5Vh6hRNoC6bikhXogTP.zZwYtISA46JaN3RMK3ckbqt8Aj52d3krSLOfBaAR1qzuJ2/"; hashedPassword = "$6$3mkwaUWd8NA6XuEb$x80tETKGz6FEG.kej3v5Vh6hRNoC6bikhXogTP.zZwYtISA46JaN3RMK3ckbqt8Aj52d3krSLOfBaAR1qzuJ2/";
extraGroups = [ "wheel" ]; extraGroups = [ "wheel" ];
openssh.authorizedKeys.keys = [
openssh.authorizedKeys = {
keys = [
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQD8g63nIaOg67kwwEd5cGXvzaTL1PefLwonKkDy1P2cJjngcH/cBmgzXUZWxWqgBIENZ3mj0EJtoD556tprRRFj9COdAEI9bxn2NkoqPCu8f7SttQTeVA63ZbAR7AHPMMngBxRiQy6SIo6mQteXha1z99+g0YHETct/qhmm2AbtakF+NSb0bIqrFYnOl7iSW4cotGjibAyX74b4dBe9A2sIYwmBs4IMjLlHmcrmqLqPIAGWY1EgNV/HIN06whbkSjpoxaFAZpxoVskk/syjzD/RRSLnFhXbljZeRkUp1nFsELNGgugQo3fx1oxigfgzo09QSRDuB6eb2Ol1XnnNU0vcJPio9PmIR9aOiinVx/i/N0QvQtedoxNgLR4bayJrOxL7wYvWGW50TCLEIZ+OnPp6HW5mGHaOWjeKymjBCXpQumTcv3TBZpsHvQ5vbTU2otbbof/1ScEzfS9XBxWPH89dua1aPBcHk58jGbNz7jRLBPNSmDgvuIMAeavrDbHu5p22XnHOPz9f2aCkX2M6ll17mN1dMc8v6/i9/gV7bmSj+DAwQEjxtYd1eQFGw9VvmDfTdzpBhLmnNAIdbHJo3WMsY0AZCvov0mEu7qJA8hrmm4ITb9pO0ZhfYfF1bZVbYfKAdF3hWPn5vxQFXKUogSXjU8lIn6Bu+Vw40IteDy2aKQ== alex.bennu@sombrero" "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQD8g63nIaOg67kwwEd5cGXvzaTL1PefLwonKkDy1P2cJjngcH/cBmgzXUZWxWqgBIENZ3mj0EJtoD556tprRRFj9COdAEI9bxn2NkoqPCu8f7SttQTeVA63ZbAR7AHPMMngBxRiQy6SIo6mQteXha1z99+g0YHETct/qhmm2AbtakF+NSb0bIqrFYnOl7iSW4cotGjibAyX74b4dBe9A2sIYwmBs4IMjLlHmcrmqLqPIAGWY1EgNV/HIN06whbkSjpoxaFAZpxoVskk/syjzD/RRSLnFhXbljZeRkUp1nFsELNGgugQo3fx1oxigfgzo09QSRDuB6eb2Ol1XnnNU0vcJPio9PmIR9aOiinVx/i/N0QvQtedoxNgLR4bayJrOxL7wYvWGW50TCLEIZ+OnPp6HW5mGHaOWjeKymjBCXpQumTcv3TBZpsHvQ5vbTU2otbbof/1ScEzfS9XBxWPH89dua1aPBcHk58jGbNz7jRLBPNSmDgvuIMAeavrDbHu5p22XnHOPz9f2aCkX2M6ll17mN1dMc8v6/i9/gV7bmSj+DAwQEjxtYd1eQFGw9VvmDfTdzpBhLmnNAIdbHJo3WMsY0AZCvov0mEu7qJA8hrmm4ITb9pO0ZhfYfF1bZVbYfKAdF3hWPn5vxQFXKUogSXjU8lIn6Bu+Vw40IteDy2aKQ== alex.bennu@sombrero"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILFMl66CW8XtBGP9ie5Xd6MyQ1c+mRa8TwSiXctq+byS alex.pinwheel-sombrero"
]; ];
}; };
}; };
};
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
gnumake gnumake

View File

@@ -0,0 +1,13 @@
{ inputs, config, ... }:
let
system = config.config-manager.system;
in
{
age = {
identityPaths = [ "/etc/ssh/sombrero" ];
};
environment.systemPackages = [
inputs.agenix.packages."${system}".default
];
}

View File

@@ -1,6 +1,8 @@
{ lib, config, ... }: { pkgs, lib, config, ... }:
let let
enabled = config.mod.ssh.enable; enabled = config.mod.ssh.enable;
authorizedKeysPath = "/home/alex/.ssh/authorized-keys";
in in
{ {
options = { options = {
@@ -10,10 +12,41 @@ in
}; };
config = lib.mkIf enabled { config = lib.mkIf enabled {
home-manager.users.alex = {
programs.ssh = {
enable = true;
matchBlocks = {
"github.com" = {
hostname = "github.com";
identityFile = "/home/alex/.ssh/alex.sombrero-github.com";
};
};
};
};
environment.etc."ssh/authorized_keys_command" = {
mode = "0755";
text = ''
#!${pkgs.bash}/bin/bash
for file in ${authorizedKeysPath}/*; do
${pkgs.coreutils}/bin/cat "$file"
done
'';
};
services = { services = {
openssh = { openssh = {
enable = true; enable = true;
ports = [ 1122 ]; ports = [ 1122 ];
hostKeys = [{
path = "/etc/ssh/sombrero";
type = "ed25519";
}];
authorizedKeysCommand = "/etc/ssh/authorized_keys_command";
authorizedKeysCommandUser = "root";
}; };
}; };
@@ -22,5 +55,26 @@ in
allowedTCPPorts = [ 1122 ]; allowedTCPPorts = [ 1122 ];
}; };
}; };
age.secrets = {
"alex.pinwheel-sombrero.pub" = {
file = ../../../../secrets/pinwheel/alex.pinwheel-sombrero.pub.age;
path = "${authorizedKeysPath}/alex.pinwheel-sombrero.pub";
};
"alex.sombrero-github.com" = {
file = ../../../../secrets/sombrero/alex.sombrero-github.com.age;
path = "/home/alex/.ssh/alex.sombrero-github.com";
owner = "alex";
group = "users";
};
"alex.sombrero-github.com.pub" = {
file = ../../../../secrets/sombrero/alex.sombrero-github.com.pub.age;
path = "/home/alex/.ssh/alex.sombrero-github.com.pub";
owner = "alex";
group = "users";
};
};
}; };
} }

View File

@@ -1,10 +1,12 @@
age-encryption.org/v1 age-encryption.org/v1
-> ssh-ed25519 vxPbZg p4V0jEUSH1GQeHcqAzKQVyQb1whfOdBQ1FM+Y3UCeXI -> ssh-ed25519 vxPbZg 1xoU/lpkuPdG+UQW1D9VrAnSSEpK+b6pu+wflgvRQFs
N6kWm/X+OdIaaipDDCPgM1bHjj3RxBOGf+E/PhJJRR8 7jupzfqRmH5wzcVX3VCqQAghHZNXHiPc6YP8es8NYic
-> ssh-ed25519 ek+b7Q iYAYLpirJ/ftOLuu+K7NAVEBXPsINGet+vyjsjTzp1w -> ssh-ed25519 MxZlmA QUqt2gwCtIUv8nFTr8LSinLt7hD05EH/N6Yobew6GEI
bal6VjX/5iOaJSXVI9T1pJWB3Pk0ees1mhMpdU6lgMc JuzbNQrpONfKkIUgi//p8LhwxjCka/SQGYimglCueCU
-> be:Y?D<-grease k$wtP -> ssh-ed25519 ek+b7Q AfW7nec0E1vtg72C1f2Qp7RM/qNf19x5eEZgsonXbCs
kVG6hZ/k+y3O5X9rDF0v1FuNSrKDH1dPgVY20yZwT43Tkhzb59DaNHYKHVrBhYVH joytWP1pp8lAgm2ORh88ETi8giGwPfCo9mwtlqTQ0U8
RWACoa7MP4LE7d6y5URUkcSk1PGKt9s7SbwuH9ExKZM+1z8 -> M,fSDC$-grease {.x R26(e2' v5Y
--- MtZ6IZYpKhgghsljQXY/psDJVufYuG2E/s5/cpuUsWU 5JMhlzqPlW0vBFTe/5gBoSqxHesiKDi9BZp7Ckf+c6P2NiJHe3yurg+l8XoxEjN9
s6<EFBFBD>:?<3F>g<EFBFBD><67><<3C>^yNH<<3C><>}<7D><><02>„4 <0B><>d¬FB(-<2D>\<[W<><57><EFBFBD><19><>3Xԙ<58><D499><EFBFBD><EFBFBD><EFBFBD>6L}<7D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><06><> gP<67>u<EFBFBD>&<26> 3<>MWZ<57>T<>kM<6B><4D><EFBFBD><EFBFBD>ϱ*h<>[<5B><>y<EFBFBD>rR<72><52><EFBFBD>*p<><70>z<EFBFBD><7A><EFBFBD><EFBFBD><EFBFBD>߃<EFBFBD><DF83>:<0F><><EFBFBD><EFBFBD><EFBFBD>e GQrQTg
--- luPA8khtSQv2Kg8v+GWx8BPXPqeqcnoiGfghMJqDFuE
픖~&l<>+I9<49><39><78>߼DV<03><06>r<EFBFBD>W<EFBFBD><57>AX r<>i<EFBFBD>Y

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,12 +1,13 @@
let let
# see `modules/age/default.nix` where these are defined # see `modules/age/default.nix` where these are defined
pinwheel = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMoI7Q4zT2AGXU+i8fLmzcNLdfMkEnfHYh4PmaEmo2QW root@pinwheel"; pinwheel = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMoI7Q4zT2AGXU+i8fLmzcNLdfMkEnfHYh4PmaEmo2QW root@pinwheel";
sombrero = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO/NltCo1L+X1OIBfIKzfrbxLpCOerQ4vTIs+QPTXkf/ root@sombrero";
alex = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINjSFvlbdy5D59UaVWjRMyBndiAT2MtCeT+6GuemkuYe alex.pinwheel"; alex = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINjSFvlbdy5D59UaVWjRMyBndiAT2MtCeT+6GuemkuYe alex.pinwheel";
in { in {
"pinwheel/syncthing-cert.age".publicKeys = [ pinwheel alex ]; "pinwheel/syncthing-cert.age".publicKeys = [ pinwheel alex ];
"pinwheel/syncthing-key.age".publicKeys = [ pinwheel alex ]; "pinwheel/syncthing-key.age".publicKeys = [ pinwheel alex ];
"pinwheel/alex.pinwheel-sombrero.age".publicKeys = [ pinwheel alex ]; "pinwheel/alex.pinwheel-sombrero.age".publicKeys = [ pinwheel alex ];
"pinwheel/alex.pinwheel-sombrero.pub.age".publicKeys = [ pinwheel alex ]; "pinwheel/alex.pinwheel-sombrero.pub.age".publicKeys = [ pinwheel sombrero alex ];
"pinwheel/alex.pinwheel-github.com.age".publicKeys = [ pinwheel alex ]; "pinwheel/alex.pinwheel-github.com.age".publicKeys = [ pinwheel alex ];
"pinwheel/alex.pinwheel-github.com.pub.age".publicKeys = [ pinwheel alex ]; "pinwheel/alex.pinwheel-github.com.pub.age".publicKeys = [ pinwheel alex ];
"pinwheel/alex.pinwheel-work.age".publicKeys = [ pinwheel alex ]; "pinwheel/alex.pinwheel-work.age".publicKeys = [ pinwheel alex ];