diff options
Diffstat (limited to 'pkgs')
-rw-r--r-- | pkgs/tools/networking/openssh/default.nix | 3 | ||||
-rw-r--r-- | pkgs/tools/networking/openssh/ssh-copy-id-fix-eof.patch | 21 |
2 files changed, 24 insertions, 0 deletions
diff --git a/pkgs/tools/networking/openssh/default.nix b/pkgs/tools/networking/openssh/default.nix index 1a96cc58d58a8..ac40ad3f1fbbc 100644 --- a/pkgs/tools/networking/openssh/default.nix +++ b/pkgs/tools/networking/openssh/default.nix @@ -53,6 +53,9 @@ stdenv.mkDerivation rec { ./dont_create_privsep_path.patch ./ssh-keysign.patch + + # See https://github.com/openssh/openssh-portable/pull/206 + ./ssh-copy-id-fix-eof.patch ] ++ optional withGssapiPatches (assert withKerberos; gssapiPatch); diff --git a/pkgs/tools/networking/openssh/ssh-copy-id-fix-eof.patch b/pkgs/tools/networking/openssh/ssh-copy-id-fix-eof.patch new file mode 100644 index 0000000000000..4ba2b562f556a --- /dev/null +++ b/pkgs/tools/networking/openssh/ssh-copy-id-fix-eof.patch @@ -0,0 +1,21 @@ +diff --git a/contrib/ssh-copy-id b/contrib/ssh-copy-id +index 392f64f..a769077 100644 +--- a/contrib/ssh-copy-id ++++ b/contrib/ssh-copy-id +@@ -247,7 +247,7 @@ installkeys_sh() { + # the -z `tail ...` checks for a trailing newline. The echo adds one if was missing + # the cat adds the keys we're getting via STDIN + # and if available restorecon is used to restore the SELinux context +- INSTALLKEYS_SH=$(tr '\t\n' ' ' <<-EOF) ++ INSTALLKEYS_SH=$(tr '\t\n' ' ' <<-EOF + cd; + umask 077; + mkdir -p $(dirname "${AUTH_KEY_FILE}") && +@@ -258,6 +258,7 @@ installkeys_sh() { + restorecon -F .ssh ${AUTH_KEY_FILE}; + fi + EOF ++ ) + + # to defend against quirky remote shells: use 'exec sh -c' to get POSIX; + printf "exec sh -c '%s'" "${INSTALLKEYS_SH}" |