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: 

相关内容

热门资讯

第一分钟开挂!聚财平台辅助,腾... 第一分钟开挂!聚财平台辅助,腾达填大坑辅助器,高科技教程-2026最新版本1、第一分钟开挂!聚财平台...
六分钟揭露!闲乐互娱源码(辅助... 六分钟揭露!闲乐互娱源码(辅助挂)其实存在有挂,揭秘教程(果真有挂)-哔哩哔哩1、闲乐互娱源码系统规...
第一分钟方法!心悦踢坑神器软件... 第一分钟方法!心悦踢坑神器软件下载,皇豪互众插件,原来是真的挂(讲解有挂)-哔哩哔哩;1、起透看视 ...
第五分钟开挂!聚友联盟免费辅助... 第五分钟开挂!聚友联盟免费辅助器下载,四川游戏家园辅助软件下载,新2025版-2026最新版本1)四...
六分钟推荐!传送屋辅助脚本(辅... 六分钟推荐!传送屋辅助脚本(辅助挂)本来存在有挂,新2025教程(有挂规律)-哔哩哔哩传送屋辅助脚本...
八分钟app!金虎爷辅助器,兴... 八分钟app!金虎爷辅助器,兴动互娱辅助器视频,都是真的是有挂(有挂详细)-哔哩哔哩1、任何兴动互娱...
2分钟开挂!多乐游戏小程序辅助... 2分钟开挂!多乐游戏小程序辅助,八闽掌上十八卦脚本,2025教程-2026最新版本1、该软件可以轻松...
第八分钟揭露!衢州都莱有没有挂... 第八分钟揭露!衢州都莱有没有挂(辅助挂)都是真的是有挂,揭秘教程(有挂猫腻)-哔哩哔哩1、游戏颠覆性...
五分钟app!龙岩闲游安卓脚本... 五分钟app!龙岩闲游安卓脚本,微友助手破解版,都是存在有挂(有挂秘籍)-哔哩哔哩龙岩闲游安卓脚本辅...
6分钟开挂!花花生活圈开挂,边... 6分钟开挂!花花生活圈开挂,边锋老友威海荣成辅助,教你攻略-2026最新版本小薇(透视辅助)致您一封...