ssh user@hostuser@server << EOF ssh user@hostuser@server sh << EOF Where sshd runs user-s-login-shell -c sh, so you know a Bourne-like shell is interpreting your code.
As an example that JVM_ARGS="-Xms512m -Xmx25000m" ./jmeter.sh... is Bourne-shell or compatible syntax. It would work in csh, tcsh, rc, es, fish shells, so wouldn't work with ssh user@server sh << EOF if the login shell of user on server was one of those shells.
A significant difference though is that in that case, user-s-login-shell is not started as a login shell so won't read /etc/profile or ~/.profile (or the equivalent for the user's login shell) to set the login session up.
Alternatively, you could convert that code to a syntax compatible to all those shells: env JVM_ARGS='-Xms512m -Xmx25000m' ./jmeter.sh... (use single quotes instead of double quotes and use env to pass an env var instead of the Bourne/rc specific envvar=value cmd syntax).