keys: restructure and add support for age receivers
This filters incompatible SSH keys from leaking into age and adds support for dedicated age receivers instead.
Martin Weinelt committed
May 11, 2026 at 16:35 UTC
04e2a5ffc39204345d78c45e8958b997a579c77b
8 files changed
+149
-98
build/haumea/default.nix
+3
-5
@@ -51,9 +51,7 @@
51
system.stateVersion = "14.12";
52
53
users.users.root.openssh.authorizedKeys.keys =
54
- with (import ../../ssh-keys.nix);
55
- infra # maybe this isn't needed to add (again)?
56
- ++ [
57
- brianmcgee # experiments with the old Hydra's DB
58
- ];
54
+ with (import ../../keys.nix);
55
+ ssh.groups.infra-core # maybe this isn't needed to add (again)?
56
+ ++ ssh.users.brianmcgee; # experiments with the old Hydra's DB
57
}
build/secrets.nix
+57
-32
@@ -1,81 +1,106 @@
1
let
2
- keys = import ../ssh-keys.nix;
2
+ keys = import ../keys.nix;
3
4
- secrets = with keys; {
5
- alertmanager-matrix-forwarder = [ machines.pluto ];
6
- alertmanager-oauth2-proxy-env = [ machines.pluto ];
7
- fastly-exporter-env = [ machines.pluto ];
8
- grafana-secret-key = [ machines.pluto ];
9
- hydra-aws-credentials = [ machines.mimas ];
10
- hydra-github-client-secret = [ machines.mimas ];
11
- hydra-mirror-aws-credentials = [ machines.pluto ];
12
- hydra-mirror-git-credentials = [ machines.pluto ];
13
- owncast-admin-password = [ machines.pluto ];
14
- pluto-backup-secret = [ machines.pluto ];
15
- pluto-backup-ssh-key = [ machines.pluto ];
16
- rfc39-credentials = [ machines.pluto ];
17
- rfc39-github = [ machines.pluto ];
18
- rfc39-record-push = [ machines.pluto ];
19
- storagebox-exporter-token = [ machines.pluto ];
20
- tarball-mirror-aws-credentials = [ machines.pluto ];
21
- zrepl-ssh-key = [ machines.titan ];
4
+ secrets = with keys.ssh.machines; {
5
+ alertmanager-matrix-forwarder = [ pluto ];
6
+ alertmanager-oauth2-proxy-env = [ pluto ];
7
+ fastly-exporter-env = [ pluto ];
8
+ grafana-secret-key = [ pluto ];
9
+ hydra-aws-credentials = [ mimas ];
10
+ hydra-github-client-secret = [ mimas ];
11
+ hydra-mirror-aws-credentials = [ pluto ];
12
+ hydra-mirror-git-credentials = [ pluto ];
13
+ owncast-admin-password = [ pluto ];
14
+ pluto-backup-secret = [ pluto ];
15
+ pluto-backup-ssh-key = [ pluto ];
16
+ rfc39-credentials = [ pluto ];
17
+ rfc39-github = [ pluto ];
18
+ rfc39-record-push = [ pluto ];
19
+ storagebox-exporter-token = [ pluto ];
20
+ tarball-mirror-aws-credentials = [ pluto ];
21
+ zrepl-ssh-key = [ titan ];
22
23
# builders/
24
- elated-minsky-queue-runner-token = with machines; [
24
+ elated-minsky-queue-runner-token = [
25
mimas
26
elated-minsky
27
];
28
- goofy-hopcroft-queue-runner-token = with machines; [
28
+ goofy-hopcroft-queue-runner-token = [
29
mimas
30
goofy-hopcroft
31
];
32
- hopeful-rivest-queue-runner-token = with machines; [
32
+ hopeful-rivest-queue-runner-token = [
33
mimas
34
hopeful-rivest
35
];
36
- sleepy-brown-queue-runner-token = with machines; [
36
+ sleepy-brown-queue-runner-token = [
37
mimas
38
sleepy-brown
39
];
40
41
# macs/
42
- eager-heisenberg-queue-runner-token = with machines; [
42
+ eager-heisenberg-queue-runner-token = [
43
mimas
44
eager-heisenberg
45
];
46
- enormous-catfish-queue-runner-token = with machines; [
46
+ enormous-catfish-queue-runner-token = [
47
mimas
48
enormous-catfish
49
];
50
- growing-jennet-queue-runner-token = with machines; [
50
+ growing-jennet-queue-runner-token = [
51
mimas
52
growing-jennet
53
];
54
- intense-heron-queue-runner-token = with machines; [
54
+ intense-heron-queue-runner-token = [
55
mimas
56
intense-heron
57
];
58
- kind-lumiere-queue-runner-token = with machines; [
58
+ kind-lumiere-queue-runner-token = [
59
mimas
60
kind-lumiere
61
];
62
- maximum-snail-queue-runner-token = with machines; [
62
+ maximum-snail-queue-runner-token = [
63
mimas
64
maximum-snail
65
];
66
- norwegian-blue-queue-runner-token = with machines; [
66
+ norwegian-blue-queue-runner-token = [
67
mimas
68
norwegian-blue
69
];
70
- sweeping-filly-queue-runner-token = with machines; [
70
+ sweeping-filly-queue-runner-token = [
71
mimas
72
sweeping-filly
73
];
74
};
75
+
76
+ # Not all SSH key types support encryption
77
+ filterUnsupportedKeys =
78
+ keys:
79
+ builtins.filter (
80
+ key:
81
+ let
82
+ # tokenize ssh key
83
+ parts = builtins.split "[[:space:]]+" key;
84
+
85
+ # first token is the key type
86
+ keyType = builtins.elemAt parts 0;
87
+ in
88
+ # filter out unsupported key types
89
+ !(builtins.elem keyType [
90
+ # sk-* keys cannot do encryption or key derivation
91
+ # https://github.com/FiloSottile/age/issues/537#issuecomment-1907361675
92
+ # https://github.com/str4d/rage/issues/272#issuecomment-970193691
93
+ "sk-ssh-ed25519@openssh.com"
94
+ # "not worth implementing"
95
+ # https://github.com/FiloSottile/age/issues/142#issuecomment-1001161195
96
+ "ecdsa-sha2-nistp256"
97
+ ])
98
+ ) keys;
99
+
100
in
101
builtins.listToAttrs (
102
map (secretName: {
103
name = "secrets/${secretName}.age";
79
- value.publicKeys = secrets."${secretName}" ++ keys.infra-core;
104
+ value.publicKeys = secrets."${secretName}" ++ (filterUnsupportedKeys keys.age.groups.infra-core);
105
}) (builtins.attrNames secrets)
106
)
builders/common/users.nix
+1
-1
@@ -31,7 +31,7 @@ in
31
];
32
};
33
34
- root.openssh.authorizedKeys.keys = (import ../../ssh-keys.nix).infra-core;
34
+ root.openssh.authorizedKeys.keys = (import ../../keys.nix).ssh.groups.infra-core;
35
};
36
};
37
}
keys.nix
new
+85
@@ -0,0 +1,85 @@
1
+rec {
2
+ age = {
3
+ recipients = {
4
+ hexa = [
5
+ "age1yubikey1qwuegva8azwhjxvahxm59dfsyf7xhz3ulzexav2dkulq6vm958rlz2xxp9l"
6
+ "age1yubikey1qtm7740epvw4ju2a53vy7jgs6nvfpz5mjq6vvzwf2ty04h6h7l7tqytgu5k"
7
+ ];
8
+ };
9
+ groups = with age.recipients; {
10
+ infra-core = ssh.groups.infra-core ++ hexa;
11
+ };
12
+ };
13
+
14
+ ssh = {
15
+ users = {
16
+ arianvp = [
17
+ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHdERauixCGEk0oxLB+725k2M3McKHM0hjOjOWS+Dxdf arian@Mac"
18
+ ];
19
+
20
+ eelco = [
21
+ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAnI5L6oCgFyvEesL04LnbnH1TBhegq1Yery6TNlIRAA edolstra@gmail.com"
22
+ ];
23
+
24
+ hydra-queue-runner = [
25
+ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCyM48VC5fpjJssLI8uolFscP4/iEoMHfkPoT9R3iE3OEjadmwa1XCAiXUoa7HSshw79SgPKF2KbGBPEVCascdAcErZKGHeHUzxj7v3IsNjObouUOBbJfpN4DR7RQT28PZRsh3TvTWjWnA9vIrSY/BvAK1uezFRuObvatqAPMrw4c0DK+JuGuCNkKDGHLXNSxYBc5Pmr1oSU7/BDiHVjjyLIsAMIc20+q8SjWswKqL1mY193mN7FpUMBtZrd0Za9fMFRII9AofEIDTOayvOZM6+/1dwRWZXM6jhE6kaPPF++yromHvDPBnd6FfwODKLvSF9BkA3pO5CqrD8zs7ETmrV hydra-queue-runner@chef"
26
+ ];
27
+
28
+ zimbatm = [
29
+ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOuiDoBOxgyer8vGcfAIbE6TC4n4jo8lhG9l01iJ0bZz zimbatm"
30
+ ];
31
+
32
+ vcunat = [
33
+ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC4IJkFIVyImkfD4fM89ya+hy2ig8kUg09PCdjB5rS82akFoucYZSYMG41ZrlMT5LAikIgWusBzpO5bBkqxqcYqaYK/VF06zVBk3kF1pAIoitst9z0PLXY8/N+bFJg6oT7p6EWGRvFggUviSTTvJFMNUdDgEpsLqLp8+IYXjfM3Cz6+TQmyWQSockobRqgdILTjc1p2uxmNSzy2fElpZ0sKRPLNYG4SVPBPnOavs1KPOtyC1pIHOuz5A605gPLFXoWpX2lIK6atmGheiHxURDAX3pANVm+iMmnjteP0jEGU26/SPqgVP3OxdcryHxL3WnSJGtTnycoa30qP/Edmy9vB"
34
+ ];
35
+
36
+ hexa = [
37
+ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAWQRR7dspgQ6kCwyFnoVlgmmPR4iWL1+nvq6a5ad2Ug hexa@gaia"
38
+ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFSpdtIxIBFtd7TLrmIPmIu5uemAFJx4sNslRsJXfFxr hexa@helix"
39
+ ];
40
+
41
+ mic92 = [
42
+ "sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIEVSsc5mlP8aWiUVwWWM3gKlB5LHVpmKSifnDyox/BnVAAAABHNzaDo= yubikey1"
43
+ "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCsjXKHCkpQT4LhWIdT0vDM/E/3tw/4KHTQcdJhyqPSH0FnwC8mfP2N9oHYFa2isw538kArd5ZMo5DD1ujL5dLk= ssh@secretive.Joerg’s-Laptop.local"
44
+ ];
45
+
46
+ jfly = [
47
+ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIImw0Xc1buEQ9WOskyGGeg3QwdbU7DTUQBiu02fObDlm jfly"
48
+ ];
49
+
50
+ brianmcgee = [
51
+ "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBKHHl5kgMDNQA/zqK+AzT4SO09rfAp+y/EeUC+Ow5XqyNid5lm6sgLGM+AqZDx0jOrMKWhd5lhzGDdtsSf0Y8g4= brian@saturn"
52
+ ];
53
+ };
54
+
55
+ groups = with ssh.users; {
56
+ infra-core = arianvp ++ hexa ++ mic92 ++ vcunat ++ zimbatm;
57
+
58
+ infra = ssh.groups.infra-core ++ jfly;
59
+ };
60
+
61
+ machines = {
62
+ # build/
63
+ haumea = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBamzRwZmoLjBFoNruGSVJEahk02Ku7NrBOmqcRWxcPm";
64
+ pluto = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPzc6B1S4mp3T3oWZnqQDkDVWFBIzLtkgkdgstfYZ5d/";
65
+ mimas = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICzfTNppOS5b5IvZl1wqjGTUZE0D/o/MY8d7uKPWDvIp";
66
+ titan = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDgz6s5Yho6/bjvrRDuJ2IewAZQaevAMOeMjVjMaw5e+";
67
+
68
+ # builders/
69
+ elated-minsky = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIvrJpd3aynfPVGGG/s7MtRFz/S6M4dtqvqKI3Da7O7+";
70
+ goofy-hopcroft = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICTJEi+nQNd7hzNYN3cLBK/0JCkmwmyC1I+b5nMI7+dd";
71
+ hopeful-rivest = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBgjwpQaNAWdEdnk1YG7JWThM4xQdKNJ3h3arhF7+iFm";
72
+ sleepy-brown = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOh4/3m7o6H3J5QG711aJdlSUVvlC8yW6KoqAES3Fy6I";
73
+
74
+ # macs/
75
+ eager-heisenberg = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBp9NStfEPu7HdeK8f2KEnynyirjG9BUk+6w2SgJtQyS";
76
+ enormous-catfish = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMlg7NXxeG5L3s0YqSQIsqVG0MTyvyWDHUyYEfFPazLe";
77
+ growing-jennet = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAQGthkSSOnhxrIUCMlRQz8FOo5Y5Nk9f9WnVLNeRJpm";
78
+ intense-heron = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICeSgOe/cr1yVAJOl30t3AZOLtvzeQa5rnrHGceKeBue";
79
+ kind-lumiere = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFoqn1AAcOqtG65milpBtWVXP5VcBmTUSMGNfJzPwW8Q";
80
+ maximum-snail = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEs+fK4hH8UKo+Pa7u1VYltkMufBHHH5uC93RQ2S6Xy9";
81
+ norwegian-blue = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDQ6Cjvoq5VBYfXl6ZV/ijQ1q4UxbWRYYfkXe0rzmJjf";
82
+ sweeping-filly = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE6b/coXQEcFZW1eG4zFyCMCF0mZFahqmadz6Gk9DWMF";
83
+ };
84
+ };
85
+}
macs/common.nix
+1
-1
@@ -70,7 +70,7 @@ in
70
users.users.root.openssh.authorizedKeys.keys = [
71
(authorizedNixStoreKey sshKeys.hydra-queue-runner)
72
]
73
- ++ (import ../ssh-keys.nix).infra-core;
73
+ ++ (import ../keys.nix).ssh.groups.infra-core;
74
75
system.activationScripts.postActivation.text = ''
76
printf "disabling spotlight indexing... "
modules/common.nix
+1
-1
@@ -9,7 +9,7 @@ with lib;
9
10
users.mutableUsers = false;
11
12
- users.extraUsers.root.openssh.authorizedKeys.keys = with import ../ssh-keys.nix; infra-core;
12
+ users.extraUsers.root.openssh.authorizedKeys.keys = with import ../keys.nix; ssh.groups.infra-core;
13
14
nix = {
15
settings = {
non-critical-infra/modules/common.nix
+1
-1
@@ -11,7 +11,7 @@
11
time.timeZone = "UTC";
12
13
systemd.services.openssh.enable = true;
14
- users.users.root.openssh.authorizedKeys.keys = (import ../../ssh-keys.nix).infra;
14
+ users.users.root.openssh.authorizedKeys.keys = (import ../../keys.nix).ssh.groups.infra;
15
16
environment.systemPackages = with pkgs; [ neovim ];
17
ssh-keys.nix
deleted
-57
@@ -1,57 +0,0 @@
1
-rec {
2
- arianvp-mac = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHdERauixCGEk0oxLB+725k2M3McKHM0hjOjOWS+Dxdf arian@Mac";
3
-
4
- eelco = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAnI5L6oCgFyvEesL04LnbnH1TBhegq1Yery6TNlIRAA edolstra@gmail.com";
5
-
6
- hydra-queue-runner = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCyM48VC5fpjJssLI8uolFscP4/iEoMHfkPoT9R3iE3OEjadmwa1XCAiXUoa7HSshw79SgPKF2KbGBPEVCascdAcErZKGHeHUzxj7v3IsNjObouUOBbJfpN4DR7RQT28PZRsh3TvTWjWnA9vIrSY/BvAK1uezFRuObvatqAPMrw4c0DK+JuGuCNkKDGHLXNSxYBc5Pmr1oSU7/BDiHVjjyLIsAMIc20+q8SjWswKqL1mY193mN7FpUMBtZrd0Za9fMFRII9AofEIDTOayvOZM6+/1dwRWZXM6jhE6kaPPF++yromHvDPBnd6FfwODKLvSF9BkA3pO5CqrD8zs7ETmrV hydra-queue-runner@chef";
7
-
8
- zimbatm = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOuiDoBOxgyer8vGcfAIbE6TC4n4jo8lhG9l01iJ0bZz zimbatm";
9
-
10
- vcunat = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC4IJkFIVyImkfD4fM89ya+hy2ig8kUg09PCdjB5rS82akFoucYZSYMG41ZrlMT5LAikIgWusBzpO5bBkqxqcYqaYK/VF06zVBk3kF1pAIoitst9z0PLXY8/N+bFJg6oT7p6EWGRvFggUviSTTvJFMNUdDgEpsLqLp8+IYXjfM3Cz6+TQmyWQSockobRqgdILTjc1p2uxmNSzy2fElpZ0sKRPLNYG4SVPBPnOavs1KPOtyC1pIHOuz5A605gPLFXoWpX2lIK6atmGheiHxURDAX3pANVm+iMmnjteP0jEGU26/SPqgVP3OxdcryHxL3WnSJGtTnycoa30qP/Edmy9vB";
11
-
12
- hexa-gaia = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAWQRR7dspgQ6kCwyFnoVlgmmPR4iWL1+nvq6a5ad2Ug hexa@gaia";
13
- hexa-helix = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFSpdtIxIBFtd7TLrmIPmIu5uemAFJx4sNslRsJXfFxr hexa@helix";
14
-
15
- mic92-turingmachine = "sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIEVSsc5mlP8aWiUVwWWM3gKlB5LHVpmKSifnDyox/BnVAAAABHNzaDo= yubikey1";
16
- mic92-evo = "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCsjXKHCkpQT4LhWIdT0vDM/E/3tw/4KHTQcdJhyqPSH0FnwC8mfP2N9oHYFa2isw538kArd5ZMo5DD1ujL5dLk= ssh@secretive.Joerg’s-Laptop.local";
17
-
18
- jfly = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIImw0Xc1buEQ9WOskyGGeg3QwdbU7DTUQBiu02fObDlm jfly";
19
-
20
- brianmcgee = "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBKHHl5kgMDNQA/zqK+AzT4SO09rfAp+y/EeUC+Ow5XqyNid5lm6sgLGM+AqZDx0jOrMKWhd5lhzGDdtsSf0Y8g4= brian@saturn";
21
-
22
- infra-core = [
23
- hexa-gaia
24
- hexa-helix
25
- vcunat
26
- zimbatm
27
- mic92-turingmachine
28
- mic92-evo
29
- arianvp-mac
30
- ];
31
-
32
- infra = infra-core ++ [ jfly ];
33
-
34
- machines = {
35
- # build/
36
- haumea = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBamzRwZmoLjBFoNruGSVJEahk02Ku7NrBOmqcRWxcPm";
37
- pluto = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPzc6B1S4mp3T3oWZnqQDkDVWFBIzLtkgkdgstfYZ5d/";
38
- mimas = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICzfTNppOS5b5IvZl1wqjGTUZE0D/o/MY8d7uKPWDvIp";
39
- titan = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDgz6s5Yho6/bjvrRDuJ2IewAZQaevAMOeMjVjMaw5e+";
40
-
41
- # builders/
42
- elated-minsky = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIvrJpd3aynfPVGGG/s7MtRFz/S6M4dtqvqKI3Da7O7+";
43
- goofy-hopcroft = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICTJEi+nQNd7hzNYN3cLBK/0JCkmwmyC1I+b5nMI7+dd";
44
- hopeful-rivest = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBgjwpQaNAWdEdnk1YG7JWThM4xQdKNJ3h3arhF7+iFm";
45
- sleepy-brown = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOh4/3m7o6H3J5QG711aJdlSUVvlC8yW6KoqAES3Fy6I";
46
-
47
- # macs/
48
- eager-heisenberg = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBp9NStfEPu7HdeK8f2KEnynyirjG9BUk+6w2SgJtQyS";
49
- enormous-catfish = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMlg7NXxeG5L3s0YqSQIsqVG0MTyvyWDHUyYEfFPazLe";
50
- growing-jennet = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAQGthkSSOnhxrIUCMlRQz8FOo5Y5Nk9f9WnVLNeRJpm";
51
- intense-heron = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICeSgOe/cr1yVAJOl30t3AZOLtvzeQa5rnrHGceKeBue";
52
- kind-lumiere = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFoqn1AAcOqtG65milpBtWVXP5VcBmTUSMGNfJzPwW8Q";
53
- maximum-snail = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEs+fK4hH8UKo+Pa7u1VYltkMufBHHH5uC93RQ2S6Xy9";
54
- norwegian-blue = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDQ6Cjvoq5VBYfXl6ZV/ijQ1q4UxbWRYYfkXe0rzmJjf";
55
- sweeping-filly = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE6b/coXQEcFZW1eG4zFyCMCF0mZFahqmadz6Gk9DWMF";
56
- };
57
-}