当前位置: 首页 > news >正文

Java 使用 SSHJ 执行 SSH 命令和 SFTP 文件上传和下载

✅ 推荐:使用 sshj(客户端连接 SSH)
适合:远程登录服务器、执行命令、上传/下载文件等。

❌ 不推荐:使用 jsch(客户端连接 SSH)
不支持 ssh 新版本算法。

🔧 Maven 依赖

<dependency><groupId>com.hierynomus</groupId><artifactId>sshj</artifactId><version>0.40.0</version> <!-- 建议使用最新版本 -->
</dependency>

✅ Java 示例:执行命令

import net.schmizz.sshj.SSHClient;
import net.schmizz.sshj.connection.channel.direct.Session;
import net.schmizz.sshj.transport.verification.PromiscuousVerifier;public class SshjExecExample {public static void main(String[] args) {String host = "your.server.ip";String user = "root";String password = "your_password";try (SSHClient ssh = new SSHClient()) {ssh.addHostKeyVerifier(new PromiscuousVerifier()); // 跳过 host key 验证ssh.connect(host);ssh.authPassword(user, password);try (Session session = ssh.startSession()) {Session.Command cmd = session.exec("uname -a");System.out.println(new String(cmd.getInputStream().readAllBytes()));cmd.join();}ssh.disconnect();} catch (Exception e) {e.printStackTrace();}}
}

✅ Java 示例:上传文件(SFTP)

import net.schmizz.sshj.SSHClient;
import net.schmizz.sshj.sftp.SFTPClient;
import net.schmizz.sshj.transport.verification.PromiscuousVerifier;import java.io.File;
import java.io.IOException;public class SshjUploadExample {public static void main(String[] args) throws IOException {String host = "your.server.ip";String user = "root";String password = "your_password";SSHClient ssh = new SSHClient();ssh.addHostKeyVerifier(new PromiscuousVerifier());ssh.connect(host);ssh.authPassword(user, password);SFTPClient sftp = ssh.newSFTPClient();sftp.put(new File("local.txt").getPath(), "/root/remote.txt");sftp.close();ssh.disconnect();}
}
http://www.dtcms.com/a/320490.html

相关文章:

  • 亚麻云之平步轻云
  • GDB中thread apply all命令使用指南
  • 正确使用 JetBrains
  • Upscayl – 免费开源的 AI 图像放大工具,跨平台使用
  • FastAPI的BackgroundTasks如何玩转生产者-消费者模式?
  • HTML 与 CSS:从 “认识标签” 到 “美化页面” 的入门指南
  • application.properties配置文件详解
  • 【Android笔记】Android 自定义 TextView 实现垂直渐变字体颜色(支持 XML 配置)
  • Linux 内存管理之page folios
  • Kiro智能化代码重构实战:从遗留系统到现代架构的AI驱动转型
  • STM32HAL 快速入门(二):用 CubeMX 配置点灯程序 —— 从工程生成到 LED 闪烁
  • ELK+Redis+Nginx多节点部署实战:从日志收集到可视化分析
  • 大语言模型提示工程与应用
  • 破界之光:DeepSeek 如何重构AI搜索引擎的文明坐标 || #AIcoding·八月创作之星挑战赛#
  • 分治-快排-215.数组中的第k个最大元素-力扣(LeetCode)
  • GPT OSS 双模型上线,百度百舸全面支持快速部署
  • MCP实现:.Net实现MCP服务端 + Ollama ,MCP服务端工具调用
  • 构建响应式在线客服聊天系统的前端实践 Vue3+ElementUI + CSS3
  • RAG实现:.Net + Ollama + Qdrant 实现文本向量化,实现简单RAG
  • 【优选算法】BFS解决拓扑排序
  • Spring Boot + ECharts 极简整合指南:从零实现动态数据可视化大屏
  • Java Stream API 详解与实战案例
  • 广东省省考备考(第七十天8.8)——言语、判断推理(强化训练)
  • Ubuntu 22.04 安装 Docker 完整指南
  • flutter TLS protocol versions: (TLSv1.2, TLSv1.3)
  • flutter开发(一)flutter命令行工具
  • Flutter开发 多孩子布局组件
  • 在 Debian 系统上安装 Redis服务
  • VRTE 的应用程序部署到Ubuntu上 报错:bash: ./rb_exmd: No such file or directory
  • Korg 电子琴 2025 高级电子琴手机版:专业的音乐创作与演奏工具