Somehow I do always get this bug while trying to start Windows slaves from a Linux jenkins instance via SSH. SSH is configured properly on the machine and jenkins is configured to start a session using the Administrator account, which works fine.
The log is available at https://gist.github.com/ssbarnea/370949586b622f751d07 and the important part being:
#./deploy/slave-setup.sh
' on tocco
[marvin] $ /bin/bash C:\Users\Administrator\hudson5000371039477233927.sh
hudson.util.IOException2: Slave JVM has not reported exit code. Is it still running?
at hudson.plugins.sshslaves.SSHLauncher.startSlave(SSHLauncher.java:953)
at hudson.plugins.sshslaves.SSHLauncher.access$400(SSHLauncher.java:133)
Caused by: java.io.IOException: Cannot run program "/bin/bash" (in directory "C:\tools\cygwin\home\Administrator\marvin\marvin"): CreateProcess error=3, The system cannot find the path specified
at java.lang.ProcessBuilder.start(Unknown Source)
at hudson.Proc$LocalProc.<init>(Proc.java:244)
The windows path is correct, being created by Jenkins, but it seems that he execution of /bin/bash is the one that fails. If one does manually performs ssh to the machine, using the same credentials, they would be able to run /bin/bash.
I believe that the problem is because Jenkins is assuming that being a Windows machine it has to provide a Windows path to the CreateProcess which probably expects a Unix path instead because the entire shell is run under cygwin.
Still, I tried any combinations of configuring the slave path on the node configuration but none seems to work.
Do you have tested the nvInject plugin?
Maybe it is an alternative to your issue.
Anyway, you could use the EnvInject plugin to setup the job workspace.