infrastructure/home/shell/ssh.nix

74 lines
1.8 KiB
Nix

{
pkgs,
lib,
...
}: let
gcpHost = {
hostname,
project,
zone,
forwardAgent ? false,
}: {
proxyCommand = "${lib.getExe pkgs.python3} -S ${pkgs.google-cloud-sdk}/google-cloud-sdk/lib/gcloud.py compute start-iap-tunnel ${hostname} %p --listen-on-stdin --project ${project} --zone ${zone}";
forwardAgent = forwardAgent;
checkHostIP = false;
identitiesOnly = true;
extraOptions = {
StrictHostKeyChecking = "no";
ProxyUseFdpass = "no";
UserKnownHostsFile = "~/.ssh/google_compute_known_hosts";
};
};
in {
programs.ssh = {
enable = true;
compression = true;
addKeysToAgent = "yes";
matchBlocks = {
"cesium git.fainsin.bzh" = {
hostname = "fainsin.bzh";
user = "root";
port = 624;
};
"nicole" = {
hostname = "3.tcp.eu.ngrok.io";
user = "laurent";
port = 25077;
forwardAgent = true;
};
"dataverse51" = gcpHost {
hostname = "dataverse51";
project = "genie-training";
zone = "europe-west4-a";
forwardAgent = true;
};
"dataverse51-gpu" = gcpHost {
hostname = "dataverse51-gpu";
project = "genie-training";
zone = "europe-west4-a";
forwardAgent = true;
};
"dataverse51-cvat" = gcpHost {
hostname = "dataverse51-cvat";
project = "genie-training";
zone = "europe-west4-a";
forwardAgent = true;
};
"laurent-dev-l4" = gcpHost {
hostname = "laurent-dev-l4";
project = "genie-training";
zone = "europe-west1-b";
forwardAgent = true;
};
"laurent-dev-a100" = gcpHost {
hostname = "laurent-dev-a100";
project = "genie-training";
zone = "europe-west4-a";
forwardAgent = true;
};
};
};
}