Failed to use against shell other than bash
Opened this issue · 2 comments
I tried to run sga-guard
to forward to a remove server, which uses fish as default shell. This is the response I got:
Connecting to user@foobar.com to set up forwarding...
Failed to run remote stub: fish: Variables may not be used as commands. In fish, please define a function or use 'eval $SHELL'.
$SHELL -l -c "exec sga-stub"
^
Make sure that guardian agent is properly installed on the remote host
If I switch the default shell of the remote user (user@foobar.com) to /bin/bash
, the forwarding would be successful. That means the agent depends on the behaviour of specific shell environment, which is not ideal.
Please fix this if possible. Thanks.
Temporary workaround is to specify sga-stub
location directly. If your sga-stub
is installed in the $PATH of your remote environment, this should be easy:
sga-guard --stub="sga-stub" user@foobar.com
Please note if the sga-stub
is not in $PATH
of the remote user, the --stub=
value should be the full path to the sga-stub
binary there.
I believe that the fix the Fish shell is suggestion would also work on Bash as well. So changing line 29 of /cmd/sga-guard-bin/sga-guard-bin.go from:
RemoteStubName string `long:"stub" description:"Remote stub executable path" default:"$SHELL -l -c \"exec sga-stub\""`
to
RemoteStubName string `long:"stub" description:"Remote stub executable path" default:"eval $SHELL -l -c \"exec sga-stub\""`
Quoting may need some work.