I have a question that appears very similar to others that have been asked but none of them have answered my problem. I'm running into an ssh error on sending a command (not loading an interactive shell).
The Scenario
My default shell at my company is csh instead of something more sane like bash. I know bash is supported since some other teammates use it as the default shell. For all of our processes, csh works fine but I would just like to use something better. I've modified my .cshrc to start up bash.
setenv SHELL /bin/bash
exec /bin/bash --login
That creates the shell just fine, sets the SHELL environment variable and starts bash on startup. The issue arises with all of the ssh (and rsh) commands that are run either through scripts or manually. I can run ssh user@host
and get a shell just fine but I'm trying to run ssh -vvv user@host "echo hello"
It hangs at the end, after authenticating and sending the command, with
debug1: Sending command: echo hello
debug2: channel 0: request exec confirm 1
debug2: callback done
debug2: channel 0: open confirm rwindow 0 rmax 32768
debug2: channel 0: rcvd adjust 2097152
debug2: channel_input_status_confirm: type 99 id 0
debug2: exec request accepted on channel 0
What I've Tried
These changes are being tested by just sshing to the localhost to keep it simple.
.bashrc and .bash_profile changes
I've played around with so many different configurations of .bashrc and .bash_profile making sure it's not related to environment variables. That doesn't really seem to be the issue since they're all the same in bash as they are in csh (which works just fine).
Adding -t
I added the -t
flag to ssh to connect but that doesn't actually run the command I tell it to run but gives me a shell to use. It also isn't necessarily a solution in and of itself since a bunch of scripts can't be modified as they're shared by everyone.
[user@host: ~/test ] $ ssh -t user@host "echo hello"
[user@host ~]$
Sanity Testing In csh
With -t
:
[user@host: ~/test ] $ ssh -t user@host "echo hello"
hello
Connection to host closed.
[user@host: ~/test ] $
Without -t
:
[user@host: ~/test ] $ ssh -t user@host "echo hello"
hello
[user@host: ~/test ] $
Additional Info
IT support at my company has taken a look and just said it was a problem with my bash profile and to look at my .bashrc and .bash_profile, basically telling me to figure it out myself. I'm not saying they're wrong but I am saying I've done all the debugging I can think of, which is why I'm coming here. This also pretty much means I can't change anything on the server side and have to rely on the client/user side.
Bash is definitely loaded and not running csh with my .cshrc changes, as judged by ps:
PID TTY TIME CMD
6725 pts/68 00:00:00 bash
26391 pts/68 00:00:00 ps
Conclusion
What the heck is going on? I'm pretty confused since I don't know all that much about the inner workings of ssh and I'm even less certain why csh would behave one way and bash another. Is my bash startup funky?