`

Linux SSH UsernamePasswordInteractive Login with Java ganymed-ssh2

 
阅读更多
引用
Ganymed SSH-2 for Java is a library which implements the SSH-2 protocol in pure Java, more details http://www.ganymed.ethz.ch/ssh2/


引用
Here is a full sample for how to do UsernamePasswordInteractive Login and run scp/shell comamnd


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.KnownHosts;
import ch.ethz.ssh2.SCPClient;
import ch.ethz.ssh2.Session;
import ch.ethz.ssh2.StreamGobbler;


public class SSHUtils
{
    public static Connection getSSHConnection() throws IOException {
        KnownHosts database = new KnownHosts();
        Connection conn = new Connection("TARGET_LINUX_HOSTNAME");

        String[] hostkeyAlgos = database.getPreferredServerHostkeyAlgorithmOrder("TARGET_LINUX_HOSTNAME");

        if (hostkeyAlgos != null)
        {
            conn.setServerHostKeyAlgorithms(hostkeyAlgos);
        }

        conn.connect(new AdvancedVerifier());

        if (conn.isAuthMethodAvailable("USERNAME", "keyboard-interactive"))
        {
            // login for the first time
            UsernamePasswordInteractiveCallback il = new UsernamePasswordInteractiveCallback();
            boolean loginSuccess = conn.authenticateWithKeyboardInteractive("USERNAME", il);
            if (!loginSuccess)
            {
                System.out.println("login failed");
            }

        }
        return conn;
    }
    
    public static List<String> runCommand(final Connection conn,String command) throws IOException {
        //handle error stream in real case
        Session sess = conn.openSession();
        List<String> files = new ArrayList<String>();
        sess.execCommand(command);
        InputStream stdout = new StreamGobbler(sess.getStdout());
        BufferedReader br = new BufferedReader(new InputStreamReader(stdout));
        while (true)
        {
            String line = br.readLine();
            if (line == null)
            {
                break;
            }
            if (!line.trim().isEmpty())
            {
                files.add(line.trim());
            }
        }
        sess.close();
        return files;
    }
    
    public static void copyFile(final Connection conn, String sourcePath, String targetPart) throws IOException {
        SCPClient scpClient = conn.createSCPClient();
        scpClient.get(sourcePath, targetPart);
    }
}


// EOF


public class UsernamePasswordInteractiveCallback implements InteractiveCallback
{

    @Override
    public String[] replyToChallenge(String arg0, String arg1, int arg2, String[] arg3, boolean[] arg4)
        throws Exception
    {
        final String[] password = new String[1];
        password[0] = "Password";
        return password;
    }

}


class AdvancedVerifier implements ServerHostKeyVerifier
{

    public boolean verifyServerHostKey(String hostname, int port, String serverHostKeyAlgorithm,
        byte[] serverHostKey) throws Exception
    {

        return true;
    }
}
分享到:
评论

相关推荐

    Java运用ganymed-ssh2-build210.jar包远程连接操作linux服务器

    Java 远程连接 Linux 服务器使用 Ganymed-SSH2 库 标题解释 本文档的标题是"Java 运用 Ganymed-SSH2 库远程连接操作 Linux 服务器",这意味着我们将使用 Java 语言来远程连接 Linux 服务器,并使用 Ganymed-SSH2...

    Java(通过ganymed-ssh2-build210.jar)实现SSH远程连接linux终端

    Java通过ganymed-ssh2-build210.jar库实现SSH远程连接Linux终端是一个常见的应用场景,主要用于自动化运维、系统管理或者开发过程中需要与Linux服务器交互的场景。ganymed-ssh2-build210.jar是Java的一个开源SSH库,...

    ganymed-ssh2 工具类

    ganymed-ssh2是一个开源Java库,它提供了对SSH2协议的全面支持,使得开发人员能够在Java应用程序中轻松地进行远程操作,如执行命令、传输文件等。本文将深入探讨ganymed-ssh2工具类的使用及其核心功能。 ** SSH连接...

    ganymed-ssh2-262.jar

    标题中的“ganymed-ssh2-262.jar”是一个特定版本的SSH2库,由Ganymed项目提供,用于Java环境下的SSH(Secure Shell)连接。SSH是一种网络协议,常用于安全地远程登录到服务器、传输文件以及执行命令。Ganymed SSH2...

    ganymed-ssh2-build210

    标题“ganymed-ssh2-build210”指的是一个基于Java实现的SSH(Secure Shell)库,专门用于远程管理Linux服务器。这个库是 Ganymed SSH-2 的一个特定版本,版本号为210。SSH协议允许用户通过安全加密的通道与远程主机...

    ganymed-ssh2-263.jar

    解决openssh升级到8.2以后无法登录的问题,支持jdk1.5及以上版本

    ganymed-ssh2-build250.rar,jar包,源码,例子,javadoc

    再者,`ganymed-ssh2-build250-examples.jar`包含了一些示例代码,这些示例展示了如何使用Ganymed SSH2库进行基本操作,如建立SSH连接、执行远程命令、SFTP文件传输等。开发者可以通过运行这些示例快速上手,为自己...

    ganymed-ssh2-build210-sources.jar.zip

    下载网站https://repo1.maven.org/maven2/ch/ethz/ganymed/ganymed-ssh2/build210/ 此jar源码文件中包含以下这些类: SCPClient.lass Session.class Connection.clss 等许多文件传输类。 查看源码的方法: 1.把此jar...

    ssh协议依赖jar包:ganymed-ssh2-build

    在Java环境中,开发人员通常使用库来实现SSH功能,其中一个常用的库就是Ganymed SSH-2。这个库名为ganymed-ssh2-build,它允许Java应用程序与远程服务器建立SSH连接,执行命令,传输文件等。 Ganymed SSH-2库是由...

    ganymed-ssh2-build210.jar java远程访问linux服务器操作、上传下载文件

    java远程访问linux服务器操作 远程执行shll脚本或者命令、上传下载文件 package com.szkingdom.kfit.bank.ccbDirectShortcut.helper; import ch.ethz.ssh2.Connection; import ch.ethz.ssh2.SCPClient; import ...

    ganymed-ssh2-linux,java-impala驱动,java-hana驱动

    java操作Linux-shell命令的jar文件,java语言执行 Linux-cmd命令 java操作Linux-shell命令的jar文件,java语言执行 Linux-cmd命令 java操作Linux-shell命令的jar文件,java语言执行 Linux-cmd命令 java操作Linux-shell...

    java实现ssh方式连接linux(包含ganymed-ssh2-build210.jar包)

    java实现ssh方式连接linux(包含ganymed-ssh2-build210.jar包) ---------Java语言+绚丽的界面+仿ssh实现调用Linux的Terminal,实现远程连接linux进行命令行的操作!

    ganymed-ssh2-bui.jar 和jad.exe

    ganymed-ssh2-bui.jar 是java从远程服务器下载文件删除文件必须要的jar包,直接放到系统中即可。 jad.exe 是在eclipse中用java从远程服务器下载文件时会报错,在eclipse中跑的话,需要设置路径,windows-preferences...

    ganymed-ssh2

    ganymed-ssh2 ,java支持ssh协议的jar包

    ganymed-ssh2.rar

    这个压缩包中可能包含ganymed-ssh2的两个不同版本的构建——build250和build210,这是一个开源的Java实现SSH2协议的库。SSH2是SSH协议的第二版,提供了更强大的加密和身份验证机制,广泛应用于Linux系统中。 描述中...

    ganymed-ssh2 远程连接java实例代码

    Ganymed SSH-2 for Java是用纯Java实现SSH-2协议的一个包。可以利用它直接在Java程序中连接SSH服务器。Ganymed SSH-2支持SSH对话(远程命令执行和shell访问),本地和远程端口转发,本地数据流转发,X11转发和SCP。这些...

    ganymed-ssh2-build210.jar

    使用ganymed-ssh2-build210.jar从远程服务器拉取文件到本地,或上传文件到指定服务器下的目录。个人略微修改了jar包的内容,解决了文件名中带空格时报错的问题,可以下载名字中带空格的文件。

Global site tag (gtag.js) - Google Analytics