refactor(ssh): centralize SSH config into ssh module
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
# `colmena` wrapper script that opens a short-lived SSH master process for
|
# `colmena` wrapper script that opens a short-lived SSH master process for
|
||||||
# `colmena` to use so it works with hardware-backed key touch+PIN. assumes
|
# `colmena` to use so it works with hardware-backed key touch+PIN. assumes
|
||||||
# ControlPath ~/.ssh/socket-%r@%h:%p (see ./default.nix)
|
# ControlPath ~/.ssh/control/%C (see ../ssh/default.nix)
|
||||||
|
|
||||||
selector=""
|
selector=""
|
||||||
want_on=0
|
want_on=0
|
||||||
|
|||||||
@@ -61,16 +61,5 @@ in
|
|||||||
colmenaWrapped
|
colmenaWrapped
|
||||||
deployRsWrapped
|
deployRsWrapped
|
||||||
];
|
];
|
||||||
programs.ssh.settings = lib.genAttrs hostsWithKeys (
|
|
||||||
hostname:
|
|
||||||
let
|
|
||||||
meta = myUtils.hostMeta (hostDir + "/${hostname}");
|
|
||||||
in
|
|
||||||
{
|
|
||||||
User = meta.host.username;
|
|
||||||
HostName = hostname;
|
|
||||||
ControlPath = "~/.ssh/socket-%r@%h:%p";
|
|
||||||
}
|
|
||||||
);
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# `deploy` wrapper script that opens a short-lived SSH master process for
|
# `deploy` wrapper script that opens a short-lived SSH master process for
|
||||||
# `deploy-rs` to use so it works with hardware-backed key touch+PIN. assumes
|
# `deploy-rs` to use so it works with hardware-backed key touch+PIN. assumes
|
||||||
# ControlPath ~/.ssh/socket-%r@%h:%p (see ./default.nix)
|
# ControlPath ~/.ssh/control/%C (see ../ssh/default.nix)
|
||||||
|
|
||||||
# extract the target host from the `deploy-rs` flake target (e.g. `.#hecuba`)
|
# extract the target host from the `deploy-rs` flake target (e.g. `.#hecuba`)
|
||||||
node=""
|
node=""
|
||||||
|
|||||||
@@ -2,11 +2,17 @@
|
|||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
myUtils,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
cfg = config.ssh;
|
cfg = config.ssh;
|
||||||
|
|
||||||
|
hostDir = ../../../hosts;
|
||||||
|
hostsWithKeys = lib.filter (hostname: builtins.pathExists (hostDir + "/${hostname}/ssh_host.pub")) (
|
||||||
|
myUtils.dirNames hostDir
|
||||||
|
);
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.ssh.enable = lib.mkEnableOption "ssh";
|
options.ssh.enable = lib.mkEnableOption "ssh";
|
||||||
@@ -14,6 +20,8 @@ in
|
|||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
home.packages = with pkgs; [ sshfs ];
|
home.packages = with pkgs; [ sshfs ];
|
||||||
|
|
||||||
|
home.file.".ssh/control/.keep".text = "";
|
||||||
|
|
||||||
services.ssh-agent.enable = true;
|
services.ssh-agent.enable = true;
|
||||||
|
|
||||||
systemd.user.services.ssh-agent.Service.Environment = [
|
systemd.user.services.ssh-agent.Service.Environment = [
|
||||||
@@ -25,7 +33,18 @@ in
|
|||||||
enable = true;
|
enable = true;
|
||||||
enableDefaultConfig = false;
|
enableDefaultConfig = false;
|
||||||
|
|
||||||
settings = {
|
settings =
|
||||||
|
lib.genAttrs hostsWithKeys (
|
||||||
|
hostname:
|
||||||
|
let
|
||||||
|
meta = myUtils.hostMeta (hostDir + "/${hostname}");
|
||||||
|
in
|
||||||
|
{
|
||||||
|
User = meta.host.username;
|
||||||
|
HostName = hostname;
|
||||||
|
}
|
||||||
|
)
|
||||||
|
// {
|
||||||
"*" = {
|
"*" = {
|
||||||
AddKeysToAgent = "yes";
|
AddKeysToAgent = "yes";
|
||||||
ForwardAgent = false;
|
ForwardAgent = false;
|
||||||
@@ -33,6 +52,10 @@ in
|
|||||||
"~/.ssh/id_ed25519_sk"
|
"~/.ssh/id_ed25519_sk"
|
||||||
"~/.ssh/id_ed25519_sk_bak"
|
"~/.ssh/id_ed25519_sk_bak"
|
||||||
];
|
];
|
||||||
|
IdentitiesOnly = true;
|
||||||
|
ControlMaster = "auto";
|
||||||
|
ControlPath = "~/.ssh/control/%C";
|
||||||
|
ControlPersist = "10m";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user