aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2019-11-29 00:01:37 +0100
committertv <tv@krebsco.de>2019-11-29 00:09:26 +0100
commitd9d3c5072ae69357d88d0edfda5ca816d3ff96ae (patch)
treedd9688abf7c7ebc96da55e4736fd9fbc769f0e84
parent2e94e6eb24eec23075e5925f8de7468b3489d4fb (diff)
ssh: support using ssh-configured useroptional-ssh-user
Let ssh use the user configured in its configuration files when the target user is set to the empty string. Closes https://github.com/krebs/krops/issues/2
-rw-r--r--lib/default.nix2
-rw-r--r--pkgs/krops/default.nix4
-rw-r--r--pkgs/populate/default.nix12
3 files changed, 10 insertions, 8 deletions
diff --git a/lib/default.nix b/lib/default.nix
index 48e005e..184d7c7 100644
--- a/lib/default.nix
+++ b/lib/default.nix
@@ -44,7 +44,7 @@ let {
mkTarget = s: let
default = defVal: val: if val != null then val else defVal;
- parse = lib.match "(([^@]+)@)?(([^:/]+))?(:([^/]+))?(/.*)?" s;
+ parse = lib.match "(([^@]*)@)?(([^:/]+))?(:([^/]+))?(/.*)?" s;
elemAt' = xs: i: if lib.length xs > i then lib.elemAt xs i else null;
in {
user = default (lib.getEnv "LOGNAME") (elemAt' parse 1);
diff --git a/pkgs/krops/default.nix b/pkgs/krops/default.nix
index 13de4ce..08e74f7 100644
--- a/pkgs/krops/default.nix
+++ b/pkgs/krops/default.nix
@@ -20,9 +20,9 @@ in
remoteCommand = target: command:
exec "build.${target.host}" rec {
filename = "${openssh}/bin/ssh";
- argv = [
+ argv = lib.flatten [
filename
- "-l" target.user
+ (lib.optionals (target.user != "") ["-l" target.user])
"-p" target.port
"-t"
target.host
diff --git a/pkgs/populate/default.nix b/pkgs/populate/default.nix
index 1367a50..f78aa4a 100644
--- a/pkgs/populate/default.nix
+++ b/pkgs/populate/default.nix
@@ -162,8 +162,10 @@ let
--delete-excluded \
"$source_path" \
${quote (
- optionalString (!isLocalTarget target)
- "${target.user}@${target.host}:" +
+ optionalString (!isLocalTarget target) (
+ (optionalString (target.user != "") "${target.user}@") +
+ "${target.host}:"
+ ) +
target.path
)} \
>&2
@@ -176,13 +178,13 @@ let
${ssh' target} ${quote target.host} ${quote script}
'';
- ssh' = target: concatMapStringsSep " " quote [
+ ssh' = target: concatMapStringsSep " " quote (flatten [
"${openssh}/bin/ssh"
- "-l" target.user
+ (optionals (target.user != "") ["-l" target.user])
"-o" "ControlPersist=no"
"-p" target.port
"-T"
- ];
+ ]);
in