Search in sources :

Example 31 with Session

use of com.jcraft.jsch.Session in project hadoop by apache.

the class SshFenceByTcpPort method tryFence.

@Override
public boolean tryFence(HAServiceTarget target, String argsStr) throws BadFencingConfigurationException {
    Args args = new Args(argsStr);
    InetSocketAddress serviceAddr = target.getAddress();
    String host = serviceAddr.getHostName();
    Session session;
    try {
        session = createSession(serviceAddr.getHostName(), args);
    } catch (JSchException e) {
        LOG.warn("Unable to create SSH session", e);
        return false;
    }
    LOG.info("Connecting to " + host + "...");
    try {
        session.connect(getSshConnectTimeout());
    } catch (JSchException e) {
        LOG.warn("Unable to connect to " + host + " as user " + args.user, e);
        return false;
    }
    LOG.info("Connected to " + host);
    try {
        return doFence(session, serviceAddr);
    } catch (JSchException e) {
        LOG.warn("Unable to achieve fencing on remote host", e);
        return false;
    } finally {
        session.disconnect();
    }
}
Also used : JSchException(com.jcraft.jsch.JSchException) InetSocketAddress(java.net.InetSocketAddress) Session(com.jcraft.jsch.Session)

Example 32 with Session

use of com.jcraft.jsch.Session in project hadoop by apache.

the class SFTPConnectionPool method disconnect.

void disconnect(ChannelSftp channel) throws IOException {
    if (channel != null) {
        // close connection if too many active connections
        boolean closeConnection = false;
        synchronized (this) {
            if (liveConnectionCount > maxConnection) {
                --liveConnectionCount;
                con2infoMap.remove(channel);
                closeConnection = true;
            }
        }
        if (closeConnection) {
            if (channel.isConnected()) {
                try {
                    Session session = channel.getSession();
                    channel.disconnect();
                    session.disconnect();
                } catch (JSchException e) {
                    throw new IOException(StringUtils.stringifyException(e));
                }
            }
        } else {
            returnToPool(channel);
        }
    }
}
Also used : JSchException(com.jcraft.jsch.JSchException) IOException(java.io.IOException) Session(com.jcraft.jsch.Session)

Example 33 with Session

use of com.jcraft.jsch.Session in project GNS by MobilityFirst.

the class SSHClient method scpTo.

/**
   *
   * @param user
   * @param host
   * @param keyFile
   * @param lfile
   * @param rfile
   */
public static void scpTo(String user, String host, File keyFile, String lfile, String rfile) {
    if (verbose) {
        System.out.println("Remote copy file from " + lfile + " to " + host + "@" + user + ":" + rfile);
    }
    FileInputStream fis = null;
    try {
        JSch jsch = new JSch();
        Session session = authenticateWithKey(jsch, user, host, keyFile);
        // username and password will be given via UserInfo interface.
        UserInfo ui = new UserInfoPrompted();
        session.setUserInfo(ui);
        session.connect();
        boolean ptimestamp = true;
        // exec 'scp -t rfile' remotely
        String command = "scp " + (ptimestamp ? "-p" : "") + " -t " + rfile;
        Channel channel = session.openChannel("exec");
        ((ChannelExec) channel).setCommand(command);
        // get I/O streams for remote scp
        OutputStream out = channel.getOutputStream();
        InputStream in = channel.getInputStream();
        channel.connect();
        int ack = checkAck(in);
        if (ack != 0) {
            System.out.println("ACK was " + ack);
            return;
        }
        File _lfile = new File(lfile);
        if (ptimestamp) {
            command = "T " + (_lfile.lastModified() / 1000) + " 0";
            // The access time should be sent here,
            // but it is not accessible with JavaAPI ;-<
            command += (" " + (_lfile.lastModified() / 1000) + " 0\n");
            out.write(command.getBytes());
            out.flush();
            ack = checkAck(in);
            if (ack != 0) {
                System.out.println("ACK was " + ack);
                return;
            }
        }
        // send "C0644 filesize filename", where filename should not include '/'
        long filesize = _lfile.length();
        command = "C0644 " + filesize + " ";
        if (lfile.lastIndexOf('/') > 0) {
            command += lfile.substring(lfile.lastIndexOf('/') + 1);
        } else {
            command += lfile;
        }
        command += "\n";
        out.write(command.getBytes());
        out.flush();
        ack = checkAck(in);
        if (ack != 0) {
            System.out.println("ACK was " + ack);
            return;
        }
        // send a content of lfile
        fis = new FileInputStream(lfile);
        byte[] buf = new byte[1024];
        while (true) {
            int len = fis.read(buf, 0, buf.length);
            if (len <= 0) {
                break;
            }
            //out.flush();
            out.write(buf, 0, len);
        }
        fis.close();
        fis = null;
        // send '\0'
        buf[0] = 0;
        out.write(buf, 0, 1);
        out.flush();
        ack = checkAck(in);
        if (ack != 0) {
            System.out.println("ACK was " + ack);
            return;
        }
        out.close();
        channel.disconnect();
        session.disconnect();
    } catch (JSchException | IOException e) {
        GNSConfig.getLogger().severe(e.toString());
        try {
            if (fis != null) {
                fis.close();
            }
        } catch (Exception ee) {
        }
    }
}
Also used : JSchException(com.jcraft.jsch.JSchException) FileInputStream(java.io.FileInputStream) InputStream(java.io.InputStream) Channel(com.jcraft.jsch.Channel) OutputStream(java.io.OutputStream) UserInfo(com.jcraft.jsch.UserInfo) IOException(java.io.IOException) JSch(com.jcraft.jsch.JSch) FileInputStream(java.io.FileInputStream) ChannelExec(com.jcraft.jsch.ChannelExec) IOException(java.io.IOException) JSchException(com.jcraft.jsch.JSchException) File(java.io.File) Session(com.jcraft.jsch.Session)

Example 34 with Session

use of com.jcraft.jsch.Session in project GNS by MobilityFirst.

the class SSHClient method authenticateWithPassword.

/**
   *
   * @param jsch
   * @param user
   * @param host
   * @return the session
   * @throws JSchException
   */
public static Session authenticateWithPassword(JSch jsch, String user, String host) throws JSchException {
    if (host == null || user == null) {
        String host_user = JOptionPane.showInputDialog("Enter username@hostname", (user == null ? System.getProperty("user.name") : user) + (host == null ? "@localhost" : host));
        user = host_user.substring(0, host_user.indexOf('@'));
        host = host_user.substring(host_user.indexOf('@') + 1);
    }
    Session session = jsch.getSession(user, host, 22);
    // Disable those pesky "The authenticity of host" message
    // another way to do this is to use a know-hosts file
    java.util.Properties props = new Properties();
    props.setProperty("StrictHostKeyChecking", "no");
    session.setConfig(props);
    return session;
}
Also used : Properties(java.util.Properties) Properties(java.util.Properties) Session(com.jcraft.jsch.Session)

Example 35 with Session

use of com.jcraft.jsch.Session in project GNS by MobilityFirst.

the class SSHClient method exec.

/**
   *
   * @param user
   * @param host
   * @param keyFile
   * @param command
   * @param useSudo
   * @param sudoPasswd
   */
public static void exec(String user, String host, File keyFile, String command, boolean useSudo, String sudoPasswd) {
    if (verbose) {
        System.out.println("Remote execute command on " + host + (useSudo ? " as root user: " : " as user " + user + ": ") + command);
    }
    try {
        JSch jsch = new JSch();
        Session session = authenticateWithKey(jsch, user, host, keyFile);
        // username and password will be given via UserInfo interface.
        UserInfo ui = new UserInfoPrompted();
        session.setUserInfo(ui);
        session.connect();
        if (command == null) {
            command = JOptionPane.showInputDialog("Enter command", "set|grep SSH");
        }
        Channel channel = session.openChannel("exec");
        if (useSudo && sudoPasswd != null) {
            ((ChannelExec) channel).setCommand("sudo -S -p '' " + command);
        } else if (useSudo) {
            ((ChannelExec) channel).setCommand("sudo -p '' " + command);
        } else {
            ((ChannelExec) channel).setCommand(command);
        }
        //      if (useSudo) {
        //        ((ChannelExec) channel).setCommand("sudo -S -p '' " + command);
        //      } else {
        //        ((ChannelExec) channel).setCommand(command);
        //      }
        // ??? NOT SURE WHY THIS IS HERE
        channel.setInputStream(null);
        InputStream in = channel.getInputStream();
        // prep the out channel so we can give a password if it is needed
        OutputStream out = null;
        if (useSudo && sudoPasswd != null) {
            out = channel.getOutputStream();
        }
        ((ChannelExec) channel).setErrStream(System.err);
        // WESTY ADDED THIS *****
        if (useSudo) {
            // fixes "you must have a tty to sudo" problem
            ((ChannelExec) channel).setPty(true);
        }
        channel.connect();
        // suppply the password for sudo
        if (out != null) {
            out.write((sudoPasswd + "\n").getBytes());
            out.flush();
        }
        byte[] tmp = new byte[MAXCOMMANDBYTES];
        while (true) {
            while (in.available() > 0) {
                int i = in.read(tmp, 0, MAXCOMMANDBYTES);
                if (i < 0) {
                    break;
                }
                if (!verbose) {
                    System.out.print("o");
                } else {
                    System.out.print(new String(tmp, 0, i));
                }
            }
            if (channel.isClosed()) {
                GNSConfig.getLogger().log(Level.FINE, "exit status: {0}", channel.getExitStatus());
                break;
            }
            try {
                Thread.sleep(1000);
            } catch (Exception ee) {
            }
        }
        channel.disconnect();
        session.disconnect();
    } catch (JSchException | IOException e) {
        e.printStackTrace();
        GNSConfig.getLogger().severe(e.toString());
    }
}
Also used : JSchException(com.jcraft.jsch.JSchException) FileInputStream(java.io.FileInputStream) InputStream(java.io.InputStream) Channel(com.jcraft.jsch.Channel) OutputStream(java.io.OutputStream) UserInfo(com.jcraft.jsch.UserInfo) IOException(java.io.IOException) JSch(com.jcraft.jsch.JSch) ChannelExec(com.jcraft.jsch.ChannelExec) IOException(java.io.IOException) JSchException(com.jcraft.jsch.JSchException) Session(com.jcraft.jsch.Session)

Aggregations

Session (com.jcraft.jsch.Session)50 JSch (com.jcraft.jsch.JSch)30 JSchException (com.jcraft.jsch.JSchException)22 IOException (java.io.IOException)17 Channel (com.jcraft.jsch.Channel)13 ChannelSftp (com.jcraft.jsch.ChannelSftp)12 ChannelExec (com.jcraft.jsch.ChannelExec)11 File (java.io.File)10 InputStream (java.io.InputStream)8 SftpException (com.jcraft.jsch.SftpException)7 UserInfo (com.jcraft.jsch.UserInfo)7 FileInputStream (java.io.FileInputStream)7 Properties (java.util.Properties)6 OutputStream (java.io.OutputStream)5 EditableDockerHost (com.microsoft.azure.docker.model.EditableDockerHost)4 DockerHost (com.microsoft.azure.docker.model.DockerHost)3 VirtualMachine (com.microsoft.azure.management.compute.VirtualMachine)3 ByteArrayOutputStream (java.io.ByteArrayOutputStream)3 AzureDockerPreferredSettings (com.microsoft.azure.docker.model.AzureDockerPreferredSettings)2 PublicIPAddress (com.microsoft.azure.management.network.PublicIPAddress)2