Lukas Stabe
2013-Dec-24 03:28 UTC
ssh-copy-id: Issue with target machine with non-sh shell
Hi!
I have the following issue with ssh-copy-id:
The login-shell of the user I am trying to copy my keys to is fish. fish does
not
behave very sh-y. For example it does not support `command || alternative`,
which
makes it choke on the following part of the script (lines 273 ff):
ssh "$@" "
umask 077 ;
mkdir -p .ssh && cat >> .ssh/authorized_keys || exit 1 ;
if type restorecon >/dev/null 2>&1 ; then restorecon -F .ssh
.ssh/authorized_keys ; fi?
There is a very simple solution to this, which would make the code more robust
in
general: execute the code on the target machine in a `/bin/sh -c
'<code>?` call,
like this:
ssh "$@? ?/bin/sh -c '
umask 077 ;
mkdir -p .ssh && cat >> .ssh/authorized_keys || exit 1 ;
if type restorecon >/dev/null 2>&1 ; then restorecon -F .ssh
.ssh/authorized_keys ; fi??
Please consider adding this to ssh-copy-id :)
Best regards,
Lukas Stabe
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 841 bytes
Desc: Message signed with OpenPGP using GPGMail
URL:
<http://lists.mindrot.org/pipermail/openssh-unix-dev/attachments/20131224/dae16ff2/attachment-0001.bin>
