You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java如何通过SSH连接Linux虚拟机执行命令并上传文件

Java SSH连接+执行命令+SCP上传实现方案

Java生态中最常用的SSH操作库是JSch,完全可以覆盖你提到的所有功能需求,以下是具体实现步骤和等价功能对应:

第一步:引入依赖

如果用Maven管理项目,直接在pom.xml中添加以下依赖:

<dependency>
    <groupId>com.jcraft</groupId>
    <artifactId>jsch</artifactId>
    <version>0.1.55</version>
</dependency>

功能等价对应说明

1. 建立SSH连接(对应Python代码中ssh.connect逻辑)

import com.jcraft.jsch.*;
import java.io.InputStream;

public class SshOperationDemo {
    public static void main(String[] args) throws Exception {
        JSch jsch = new JSch();
        // 三个参数分别是:用户名、Linux主机IP、SSH端口
        Session session = jsch.getSession("root", "替换为你的Linux设备IP", 22);
        // 设置SSH登录密码
        session.setPassword("替换为你的SSH登录密码");
        // 测试环境可跳过主机密钥校验,生产环境建议移除该行配置正规密钥校验规则
        session.setConfig("StrictHostKeyChecking", "no");
        // 正式建立SSH连接
        session.connect();

2. 执行远程命令(等价于ssh.exec_command)

// 打开exec通道执行远程命令
        ChannelExec execChannel = (ChannelExec) session.openChannel("exec");
        // 设置要执行的命令,加-p参数避免目录已存在时报错
        execChannel.setCommand("mkdir -p /opt/Home/test_files");
        execChannel.connect();
        
        // 读取命令执行返回结果,等价于Python的stdout.read()
        InputStream inputStream = execChannel.getInputStream();
        byte[] buffer = new byte[1024];
        StringBuilder cmdResult = new StringBuilder();
        while (inputStream.read(buffer) != -1) {
            cmdResult.append(new String(buffer));
        }
        // 执行完成关闭exec通道
        execChannel.disconnect();

3. SCP上传文件(等价于SCPClient(ssh.get_transport()) + scp.put)

JSch中用ChannelSftp即可实现和SCP完全一致的文件上传能力:

// 打开sftp通道,等价于Python中创建SCPClient实例
        ChannelSftp sftpChannel = (ChannelSftp) session.openChannel("sftp");
        sftpChannel.connect();
        // 两个参数分别是:本地文件完整路径、远程目标目录路径,等价于Python的scp.put
        sftpChannel.put("替换为你本地pcap文件的完整路径", "/opt/Home/test_files/");
        // 上传完成关闭sftp通道
        sftpChannel.disconnect();

4. 关闭SSH连接(对应Python的ssh.close())

session.disconnect();
    }
}

注意事项

  • 涉及含空格、特殊字符的文件路径,需要提前做转义处理避免执行报错
  • 生产环境使用建议配置主机密钥校验,不要关闭StrictHostKeyChecking规则提升安全性

内容的提问来源于stack exchange,提问作者Orly Orly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 19:45:02