Tente forçar um psuedo-tty com seu comando ssh
.
ssh -t -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i
{$this->pemkey} {$this->ssh_user} sudo /vol/start_bukkit.sh
man 1 ssh
-t Force pseudo-tty allocation. This can be used to execute
arbitrary screen-based programs on a remote machine, which
can be very useful, e.g. when implementing menu services.
Multiple -t options force tty allocation, even if ssh has
no local tty.
Além disso, no seu script start_bukkit.sh
, você não tem um conjunto PATH. Você chama java
sem um caminho absoluto, portanto, ele pode não ser encontrado. Defina um PATH no início do script (prática recomendada) ou chame java
pelo caminho absoluto ( /usr/bin/java
).