On 1/21/2015 9:36 AM, Jason Vas Dias wrote:
Good day - Please can OpenSSH provide some way of specifying which shell to use to execute commands on a host. For the account I need to use, the user's password shell is not acceptable, (a ten year old version of bash 3.0) and cannot be changed without weeks or months of burocracy , if at all. I built & installed the latest bash under that account, in the ~/bin directory, but SSH will not use it. Using the client OpenSSH version : 1:6.6p1-2ubuntu2 on a linux x86_64 Ubuntu 14.04.1 host, if I try to specify which bash to use for an SSH command like : $ ssh $account /home/${user}/bin/bash -c 'echo $BASH_VERSION; echo $BASH_VERSION';
looks like escape problem and not clear if $user should be $USER and is being done on local system... Try something like: ssh $account /home/${USER}/bin/bash -c \'echo \$BASH_VERSION\; echo \$BASH_VERSION\';
something very weird happens - only the second statement produces any output . If this is changed, we see only the first statement is run by the new shell, and the second is run by the old shell: $ ssh $account /home/${user}/bin/bash -c \ 'set | grep BASH_VERSION; echo $BASH_VERSION' Produces the output: BASH_VERSION='4.3.30(1)-release' 3.0.0(1)-release So the first statement is run by the new shell, and the second by the old shell. This appears to be a major bug in OpenSSH - should I report it ? Since OpenSSH provides no way to run commands with anything other than the user's password shell, it really needs to do so. A simple patch would be to session.c, @ line 1746 : /* * Get the shell from the password data. An empty shell field is * legal, and means /bin/sh. */ shell = (pw->pw_shell[0] == 0) ? _PATH_BSHELL : pw->pw_shell; One could do something like: char *sh; if ( (sh=getenv("SSH_SHELL") )!= NULL ) shell = sh; else shell = (pw->pw_shell[0] == 0) ? _PATH_BSHELL : pw->pw_shell; Or provide some configuration option - this would probably have to be per-server . Is there any hope of getting the ability to specify which shell to run remote commands with in a forthcoming OpenSSH release, or do I need to apply my patch and maintain my own OpenSSH branch ? Thanks & Regards, Jason _______________________________________________ openssh-unix-dev mailing list openssh-unix-dev@xxxxxxxxxxx https://lists.mindrot.org/mailman/listinfo/openssh-unix-dev
-- Douglas E. Engert <DEEngert@xxxxxxxxx> _______________________________________________ openssh-unix-dev mailing list openssh-unix-dev@xxxxxxxxxxx https://lists.mindrot.org/mailman/listinfo/openssh-unix-dev