Jsch y ejecutando "sudo su -"

Usando jsch

cuando ejecuto el siguiente cmd 'sudo su -' el programa se cuelga

[TestNG] Running:
C:\Users\brian.crosby\AppData\Local\Temp\testng-eclipse-952620154\testng-customsuite.xml
[root@tbx2-toy-1 ~]# 

Parece que el "sudo su -" funcionó debido a los estados de salida "[root @ tbx2-toy-1 ~] #", pero cuando lo envío otro cmd no responde.

Heres el código:

package com.linux;

import java.io.InputStream;
import org.testng.annotations.*;
import com.jcraft.jsch.*;
import com.thoughtworks.selenium.*;

public class LinuxConnection extends SeleneseTestBase{

    String host = null;
    private StringBuilder strFileData;
    String randomFileName = null;

    public String getFileData() {
        return strFileData.toString();
    }
    public String getRandomFileName() {
        return randomFileName;
    }

    public LinuxConnection() {
        strFileData = new StringBuilder();
    }

    @Test
    public void createUpdateTBX2FileData(String command)throws Exception {

        try {
            JSch jsch = new JSch();
            host = "brian-crosby@************.net"; 

            String user = host.substring(0, host.indexOf('@'));
            host = host.substring(host.indexOf('@') + 1);

            Session session = jsch.getSession(user, host, 22);

            UserInfo ui = new MyUserInfo();
            session.setUserInfo(ui);
            session.connect();

            ChannelExec channel = (ChannelExec)session.openChannel("exec");
            ((ChannelExec)channel).setPty(true);
            ((ChannelExec) channel).setCommand(command);

            ((ChannelExec) channel).setErrStream(System.err);

            InputStream in = channel.getInputStream();
            channel.connect();

            byte[] tmp = new byte[2048];

            while (in.read(tmp, 0, 2048) > 0) {
                String str = new String(tmp);
                strFileData.append(str);
                System.out.println(strFileData);
            }
            in.close();
            channel.disconnect();
            session.disconnect();
        } catch (Exception e) {
            System.out.println(e);
        }
    }

    public static class MyUserInfo implements UserInfo {

        public String getPassword() {
            return "********";
        }

        public boolean promptYesNo(String str) {
            str = "Yes";
            return true;
        }

        String passwd;

        public String getPassphrase() {
            return null;
        }

        public boolean promptPassphrase(String message) {
            return true;
        }

        public boolean promptPassword(String message) {
            passwd = "*******"; 
            return true;
        }

        public void showMessage(String message) {

        }
    }

}

Aquí es donde estoy enviando los cmds:

package com.linux;

import org.testng.annotations.*;

public class testLinuxConnection {

    @Test
    public void testLinux() throws Exception{
        LinuxConnection obj = new LinuxConnection();
        String command = "touch tester1.txt; sudo su -; rm tester1.txt;";
        obj.createUpdateTBX2FileData(command);  
    }
}

Una vez más, he pasado horas en google tratando de encontrar una solución, pero no tuve éxito

Cualquier ayuda es apreciada

Respuestas a la pregunta(1)

Su respuesta a la pregunta