org.apache.sshd的SshClient客户端 连接服务器执行命令 示例
创始人
2025-01-18 09:33:20
0

引入依赖

		             org.apache.sshd             sshd-core             2.9.1          

示例代码,可以直接执行,也可以做替换命令、维护session等修改

package com.demo.demo;  import lombok.extern.slf4j.Slf4j; import org.apache.sshd.client.SshClient; import org.apache.sshd.client.channel.ChannelExec; import org.apache.sshd.client.channel.ClientChannelEvent; import org.apache.sshd.client.future.AuthFuture; import org.apache.sshd.client.future.ConnectFuture; import org.apache.sshd.client.session.ClientSession;  import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.EnumSet; import java.util.concurrent.TimeUnit;  @Slf4j public class SshdUtil {      public static final String WHO_AM_I = "whoami";      public static void main(String[] args) {         execute("**.**.**.**",                 22,                 "root",                 "*****");     }      private static void execute(String host, int port, String username, String password) {         SshClient client = SshClient.setUpDefaultClient();         ClientSession session = null;         try {             client.start();             ConnectFuture connectFuture = client.connect(username, host, port).verify(10, TimeUnit.SECONDS);             if (connectFuture.isConnected()) {                 session = connectFuture.getSession();                 session.addPasswordIdentity(password);                 AuthFuture auth = session.auth().verify(10, TimeUnit.SECONDS);                 if (auth.isSuccess()) {                     channelCmd(session, WHO_AM_I);                 }             }         } catch (IOException e) {             log.error("执行异常", e);         } finally {             try {                 if (session != null) {                     session.close();                 }                 client.close();             } catch (IOException e) {                 log.error("关闭异常", e);             }         }     }      private static void channelCmd(ClientSession session, String cmd) throws IOException {         ChannelExec channel = session.createExecChannel(cmd);         ByteArrayOutputStream output = new ByteArrayOutputStream();         ByteArrayOutputStream outputErr = new ByteArrayOutputStream();         channel.setOut(output);         channel.setErr(outputErr);         channel.open();         channel.waitFor(EnumSet.of(ClientChannelEvent.CLOSED), 0);         log.info("Output:{}", output.toString().replace("\n", "\\n"));         log.info("Error:{}", outputErr.toString().replace("\n", "\\n"));     } }  

输出如下,分别代表了输出流stdout和错误输出流stderr

*** [main] SshdUtil INFO  -Output:root\n *** [main] SshdUtil INFO  -Error: 

相关内容

热门资讯

八分钟了解!newpoker怎... 八分钟了解!newpoker怎么安装脚本,哈糖大菠萝能开挂吗,指南书教程(有挂分析)1、哈糖大菠萝能...
方案辅助!微信小程序微乐破解器... 方案辅助!微信小程序微乐破解器2024!解谜真的是有辅助教程(有挂细节)1、进入到微信小程序微乐破解...
第9分钟了解!德普之星有辅助软... 第9分钟了解!德普之星有辅助软件吗,德州局透视脚本,步骤教程(有挂神器)运德普之星有辅助软件吗辅助工...
窍要辅助!洞庭茶苑app辅助!... 窍要辅助!洞庭茶苑app辅助!关于存在有辅助神器(有挂辅助)1.洞庭茶苑app辅助 选牌创建新账号,...
七分钟了解!wepoker怎么... 七分钟了解!wepoker怎么开辅助,wepoker透视脚本免费app,绝活儿教程(有挂细节)1、w...
窍要辅助!嘟咪互动有挂吗!开挂... 窍要辅助!嘟咪互动有挂吗!开挂是有辅助软件(有挂总结)窍要辅助!嘟咪互动有挂吗!开挂是有辅助软件(有...
1分钟了解!wepoker辅助... 1分钟了解!wepoker辅助器最新版本更新内容,德普之星私人局辅助免费,办法教程(有挂辅助)wep...
大纲辅助!心悦海南苹果版辅助器... 大纲辅助!心悦海南苹果版辅助器!关于是有辅助工具(有挂攻略)1、玩家可以在心悦海南苹果版辅助器线上大...
指南辅助!小程序广东雀神智能插... 指南辅助!小程序广东雀神智能插件安装下载!解谜真的是有辅助技巧(新版有挂)运小程序广东雀神智能插件安...
第九分钟了解!wepoker作... 第九分钟了解!wepoker作弊辅助,wpk辅助购买,步骤教程(新版有挂)1、完成wepoker作弊...