diff options
author | tv <tv@krebsco.de> | 2019-11-29 00:01:37 +0100 |
---|---|---|
committer | tv <tv@krebsco.de> | 2019-11-29 13:21:04 +0100 |
commit | 70fa39607fa9f0d7df424588ae109968f0f876d1 (patch) | |
tree | c8e912bca0edb372d2669e7ad1e65ab08fd5d76a | |
parent | 8de797dae0fcd1821d79c486abeffc536c2de643 (diff) |
ssh: support using ssh-configured 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.nix | 2 | ||||
-rw-r--r-- | pkgs/krops/default.nix | 4 | ||||
-rw-r--r-- | pkgs/populate/default.nix | 12 |
3 files changed, 10 insertions, 8 deletions
diff --git a/lib/default.nix b/lib/default.nix index bed284d..9fdde0b 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 if lib.isString s then { user = default (lib.getEnv "LOGNAME") (elemAt' parse 1); diff --git a/pkgs/krops/default.nix b/pkgs/krops/default.nix index e72e94c..2c12015 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 8a383b1..2b283a8 100644 --- a/pkgs/populate/default.nix +++ b/pkgs/populate/default.nix @@ -163,8 +163,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 @@ -180,13 +182,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 |