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: 

相关内容

热门资讯

解谜了解!微乐微信小程序辅助软... 解谜了解!微乐微信小程序辅助软件(辅助)盼盼果然是有辅助神器(哔哩哔哩)1、微乐微信小程序辅助软件模...
普及了解!边锋斗地主插件辅助脚... 您好,边锋斗地主插件辅助脚本这款游戏可以开挂的,确实是有挂的,需要了解加去威信【485275054】...
关于了解!爱来大菠萝免费辅助器... 关于了解!爱来大菠萝免费辅助器(辅助)嘻游联盟好像有挂辅助插件(哔哩哔哩)1、游戏颠覆性的策略玩法,...
揭幕了解!微信小程序微乐辅助免... 您好,微信小程序微乐辅助免费这款游戏可以开挂的,确实是有挂的,需要了解加去威信【136704302】...
透视了解!拱趴游戏辅助器(辅助... 透视了解!拱趴游戏辅助器(辅助)宝马大厅一直真的有辅助脚本(哔哩哔哩)拱趴游戏辅助器破解侠是真的助透...
普及了解!微乐自建房辅助可信吗... 普及了解!微乐自建房辅助可信吗(辅助)湘惠果然有挂辅助神器(哔哩哔哩)1、微乐自建房辅助可信吗模拟器...
详情了解!微乐家乡麻将辅助(辅... 详情了解!微乐家乡麻将辅助(辅助)樱花众娱原来真的是有辅助平台(哔哩哔哩)1、微乐家乡麻将辅助免费脚...
普及了解!玖游卡五星辅助(辅助... 普及了解!玖游卡五星辅助(辅助)扬州麻将果然存在有辅助神器(哔哩哔哩)1、下载好玖游卡五星辅助脚本下...
透视了解!九游破解辅助插件教程... 透视了解!九游破解辅助插件教程(辅助)馨馨确实是有辅助下载(哔哩哔哩)1、上手简单,内置详细流程视频...
解密了解!家乡大二有没有挂(辅... 解密了解!家乡大二有没有挂(辅助)9k互娱总是是有辅助下载(哔哩哔哩)1、下载好家乡大二有没有挂透视...