[ssh-client] 一个支持以直连/跳机方式连接远程主机的组件

SSH-Client

通过 SSH-Client 可以直连/跳机方式连接到远程主机执行命令、传输文件。

快速上手

引入依赖:


    com.github.LinYuanBaoBao
    ssh-client
    1.0.0-RELEASE

复制代码

建立/断开 ssh 连接

// 配置跳机
SSHClient.JumpHost jumpHost = new SSHClient.JumpHost();
jumpHost.setHost("127.122.188.117")
        .setPassword("abcd1234")
        .setPort(22)
        .setUsername("root");

SSHClient ssh = SSHClient.builder()
        .setHost("10.50.3.3")
        .setPassword("abcd1234")
        .setJumpHost(jumpHost)
        .setPort(22)
        .setUsername("root")
        .build();
ssh.setExecTimeout(3000);        // 设置执行命令超时时间
ssh.connect(10 * 1000);          // 连接远程主机,并设置连接超时时间
ssh.openSftpChannel(10 * 1000);  // 开启 sftp,并设置传输文件超时时间
复制代码

执行命令

基本使用

List output = ssh.exec("echo hello");
System.out.print(output);
// or
ssh.exec("echo hello", System.out::println);
复制代码

执行超时

try {
    ssh.exec("while true;do ls;sleep 1s; done;", System.out::println);
} catch (SSHClientException e) {
    e.printStackTrace();
}
复制代码

错误退出码

try {
    ssh.exec("ls aaaaaaaaaaaaaaaa");
} catch (UnexpectedExitStatusException e) {
    System.out.println("exitStatus:"+e.getExitStatus());
    System.out.println("errMsg:"+e.getOut());
}
复制代码

创建文件夹

ssh.mkdirs("/tmp/scp/sub1/sub2");
复制代码

传输文件

File sourceDir = new File(getClass().getResource("/assert/scp/file").getFile());
ssh.scp(sourceDir, "/tmp/scp/sub1/sub2");

你可能感兴趣的:([ssh-client] 一个支持以直连/跳机方式连接远程主机的组件)