import com.jcraft.jsch.ChannelExec; import com.jcraft.jsch.JSch; import com.jcraft.jsch.Session; import java.io.BufferedReader; import java.io.InputStreamReader; class SSHFileList { public static void main(String[] args) { String host = "192.168.10.100"; int port = 22; String user = "dkbs"; String password = "123456"; String command = "ls /tools"; // 要执行的命令 try { JSch jsch = new JSch(); Session session = jsch.getSession(user, host, port); session.setPassword(password); // 跳过主机密钥检查(生产环境应慎重) session.setConfig("StrictHostKeyChecking", "no"); session.connect(); ChannelExec channelExec = (ChannelExec) session.openChannel("exec"); channelExec.setCommand(command); BufferedReader in = new BufferedReader(new InputStreamReader(channelExec.getInputStream())); channelExec.connect(); String msg; System.out.println("你好"); while ((msg = in.readLine()) != null) { System.out.println("File: " + msg); // 输出文件名 } System.out.println("这里执行完了" ); channelExec.disconnect(); session.disconnect(); } catch (Exception e) { e.printStackTrace(); } } }
JSch 简介
- JSch 是由 JCraft 开发的一个 Java 实现的 SSH2 客户端库。它提供了通过 SSH 协议执行各种操作的能力,如执行远程命令、文件传输(通过 SFTP 和 SCP 协议)、端口转发等。
- 用途:
- SSH连接:安全地连接到远程服务器。
- SFTP:安全地上传、下载文件。
- 端口转发:使用 SSH 隧道转发端口。
- 执行命令:在远程服务器上执行命令。
JSch 的常见使用场景
- 远程执行命令:通过 SSH 在远程服务器上执行 shell 命令。
- 文件传输:通过 SFTP 协议在本地和远程服务器之间上传或下载文件。
- 端口转发:通过 SSH 隧道转发本地或远程端口。
Maven 依赖
如果你在使用 Maven,可以通过以下方式添加 JSch
库作为依赖:
xml
<dependency> <groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.55</version>
<!-- 使用最新版本 --> </dependency>