Java可以通过使用JSch库来实现SSH远程访问。JSch是Java Secure Channel的简称,是一个纯Java实现的SSH2协议客户端。
下面是一个简单的示例代码,演示如何使用JSch实现SSH远程访问:
import com.jcraft.jsch.*; public class SSHExample { public static void main(String[] args) { String host = "your_host"; String username = "your_username"; String password = "your_password"; try { JSch jsch = new JSch(); // 创建SSH会话 Session session = jsch.getSession(username, host, 22); session.setPassword(password); // 关闭主机密钥检查,避免连接时出现UnknownHostKey异常 session.setConfig("StrictHostKeyChecking", "no"); // 连接SSH服务器 session.connect(); // 执行远程命令 ChannelExec channel = (ChannelExec) session.openChannel("exec"); channel.setCommand("ls -l"); channel.connect(); // 读取命令输出 byte[] buffer = new byte[1024]; while (channel.getExitStatus() == -1) { while (channel.getInputStream().available() > 0) { int len = channel.getInputStream().read(buffer); System.out.print(new String(buffer, 0, len)); } } // 关闭SSH会话 channel.disconnect(); session.disconnect(); } catch (JSchException | java.io.IOException e) { e.printStackTrace(); } } }
上述代码通过JSch库创建了一个SSH会话,并使用用户名和密码连接到远程主机。然后,通过打开一个exec通道执行远程命令(此处是执行ls -l
命令),并读取命令输出。
需要注意的是,使用JSch进行SSH远程访问需要在项目中引入JSch库的依赖。你可以通过将以下代码添加到项目的Maven配置文件(pom.xml)中来引入JSch库的依赖:
com.jcraft jsch 0.1.54
请将上述代码中的your_host
、your_username
和your_password
替换为实际的远程主机地址、用户名和密码。