Subject: [PATCH] openssl: Fix `EOF: command not found` error in ssh-copy-id

From: Jesse Gibbons <[email-masked]>
Date: Wed, 25 Nov 2020 19:20:30 -0700

The attached patch fixes ssh-copy-id.

-Jesse
>From 32fc0e9a5a23cbb31f1965bd58d050c1cdd5c28b Mon Sep 17 00:00:00 2001
From: Jesse Gibbons <[email-masked]>
Date: Wed, 25 Nov 2020 19:12:08 -0700
Subject: [PATCH] gnu: openssh: Add upstream bugfix patch.

This fixes ssh-copy-id.

* gnu/packages/nssh.scm (openssh)[source]: Add patch.
* gnu/packages/patches/openssh-fix-eof-command-not-found.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
---
 gnu/local.mk                                  |  1 +
 .../openssh-fix-eof-command-not-found.patch   | 30 +++++++++++++++++++
 gnu/packages/ssh.scm                          |  3 +-
 3 files changed, 33 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/openssh-fix-eof-command-not-found.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 5277403196..6fc7b3f51d 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1412,6 +1412,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/openfoam-4.1-cleanup.patch			\
   %D%/packages/patches/openjdk-10-idlj-reproducibility.patch	\
   %D%/packages/patches/openmpi-mtl-priorities.patch		\
+  %D%/packages/patches/openssh-fix-eof-command-not-found.patch	\
   %D%/packages/patches/openssh-hurd.patch			\
   %D%/packages/patches/openresolv-restartcmd-guix.patch	\
   %D%/packages/patches/openscad-parser-boost-1.72.patch	\
diff --git a/gnu/packages/patches/openssh-fix-eof-command-not-found.patch b/gnu/packages/patches/openssh-fix-eof-command-not-found.patch
new file mode 100644
index 0000000000..32713d43ff
--- /dev/null
+++ b/gnu/packages/patches/openssh-fix-eof-command-not-found.patch
@@ -0,0 +1,30 @@
+From d9e727dcc04a52caaac87543ea1d230e9e6b5604 Mon Sep 17 00:00:00 2001
+From: Oleg <[email-masked]>
+Date: Thu, 1 Oct 2020 12:09:08 +0300
+Subject: [PATCH] Fix `EOF: command not found` error in ssh-copy-id
+
+---
+ contrib/ssh-copy-id | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/contrib/ssh-copy-id b/contrib/ssh-copy-id
+index 392f64f94..a76907717 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}"
diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm
index e5bcac33f2..d55c37844c 100644
--- a/gnu/packages/ssh.scm
+++ b/gnu/packages/ssh.scm
@@ -189,7 +189,8 @@ a server that supports the SSH-2 protocol.")
              (method url-fetch)
              (uri (string-append "mirror://openbsd/OpenSSH/portable/"
                                  "openssh-" version ".tar.gz"))
-             (patches (search-patches "openssh-hurd.patch"))
+             (patches (search-patches "openssh-hurd.patch"
+                                      "openssh-fix-eof-command-not-found.patch"))
              (sha256
               (base32
                "091b3pxdlj47scxx6kkf4agkx8c8sdacdxx8m1dw1cby80pd40as"))))
-- 
2.29.2