Arguments, whitespace, splitting, and shells (& compatibility)

Ángel González keisial at gmail.com
Sun Feb 21 10:31:10 AEDT 2016


On 12/02/16 12:34, Philipp Marek wrote:
> Quite some time ago there was a bit of discussion whether SSH can change
> it's (information-destroying) way of passing commands to the remote host
> (whitespace in an argument gets split up, too).
>
> [[To reproduce:
>      # echo "yes              no"
>      yes              no
> but
>      # ssh<host>  echo "yes              no"
>      yes no
> ]]
>
> For other problematic things, check "scp" for filenames containing spaces.

Note that ssh is supposed to accept a single argument (but all of us 
abuse that
several parameters are passed to the remote side ☺).


> Now, I'm well aware that the default for so many years can't be changed
> (easily); but how about a new option that repairs that behaviour?  This
> way new scripts can just add that, and don't have to work around broken
> tools ;/ (sorry, but it's really cumbersome).
>
>
> I believe there was a patch already; googling found me the (a) old
> discussion at http://www.gossamer-threads.com/lists/openssh/dev/9249,
> but the patch (if it exists, perhaps I'm still misremembering) escaped
> me.
>
>
> Please, let's try to find a solution for that...
> if not for any other reasons, then to make "ssh" a simple cloud-provider, too ;)
A new option seems about the right way to fix it, since the local ssh 
would need to
know the kind of shell used by the remote system. But if it had a 
configuration option:
RemoteShellQuoting POSIX
it could add its own quoting to preserve all the received arguments when 
passed to a POSIX shell.

It should be simple to code.

Best regards



More information about the openssh-unix-dev mailing list